cordovaプラグインでAppCompatActivityのアクティビティを開始する
androidネームスペースのActivityのアクティビティを開始する記事はまぁある以下など
https://codehero.jp/android/40375555/start-android-activity-from-cordova-plugin
しかしandroidx.appcompat.app.AppCompatActivityおよびandroidx.fragment.app.Fragmentを使う例がない
>Intent intent = new Intent(context, NewActivity.class);
>this.cordova.getActivity().startActivity(intent);
普通に上記リンク元と同じ呼び出し方でいける。自分はstartActivityForResultでアクティビティの戻り値をもらうようにしたけど(この場合同クラスにonActivityResultメソッドをオーバーライドする)
あと自分はcontextにcordova.getActivity()でこっちではいけてる。
リンク元は以下
>Context context = cordova.getActivity().getApplicationContext();
NextActivityクラスはandroidx.appcompat.app.AppCompatActivityの子クラスでいける。
androidx.fragment.app.Fragmentを使いたい場合もNextActivityから以下でいける。
setContentView(getResource().getIdentifier(name:"activity_hoge",defType:"layout",packageName));
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.replace(getResource().getIdentifier(name:"hoge",defType:"id",packageName),[フラグメントインスタンス]);
activity_hoge.xmlは以下
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout
xmls:android・・・>
<FrameLayout android:id="@+id/hoge"/>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
packageNameはフラグメントを置換するレイアウトファイルを探す場所。
・ファイル名:activity_hoge.xmlがビューとして設定され、
・id:hogeのものが置換される
org.apache.cordova.CordovaPlugin.cordova.getActivity().getApplicationContext().getPackageName() ← CordovaPluginクラスから引数で渡した
表題の内容はここで以上。
関係ないけど引数の渡し方がいちいち違うのがめんどい。
org.apache.cordova.CordovaPluginクラス
→ androidx.appcompat.app.AppCompatActivity
intentなので
・文字列渡すときputExtra
・ArrayList<String>渡すときputStringArrayListExtra
受け取り時は
Intent intent = AppCompatActivity.getIntent()
ArrayList<String> list = intent.getStringArrayListExtra(key:"key");
String str = intent.getExtras().getString(key:"key");
androidx.appcompat.app.AppCompatActivity
→ androidx.fragment.app.Fragment
android.os.Bundle
に
・StringはputString
・int配列を渡すときはputIntArray
してから
Fragment.setArguments(bundle)
受け取り時は
Bundle args = Fragment.getArguments();
int array[] = args.getIntArray(key:"key")
String str = args.getString(key:"key")
これ全部色んなところから情報集めたけどガチでめんどいよね。以上、閉廷。おつ