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")

これ全部色んなところから情報集めたけどガチでめんどいよね。以上、閉廷。おつ

いいなと思ったら応援しよう!