アクティビティからフラグメントを開始する方法 質問する

アクティビティからフラグメントを開始する方法 質問する

私はすでに、MainActivity から RecipientFragment を開始し、MainActivity から Fragment にデータを渡すことを望んでいます。これが私が実装したコードです。しかし、フラグメントは開始しません。

Bundle bundle = new Bundle();
bundle.putString(ParseConstants.KEY_FILE_TYPE, fileType);
RecipientsFragment keyfile = new RecipientsFragment();
keyfile.setArguments(bundle);
Fragment newFragment = new RecipientsFragment();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.commit();

また、intent.setData を渡して Fragment でそのデータを取得する方法も知りたいです。現在、以下のコードがあります:

受信者フラグメント

mMediaUri = getActivity().getIntent().getData();

主な活動

Intent recipientsIntent = new Intent(this, RecipientsFragment.class);
        recipientsIntent.setData(mMediaUri);

ベストアンサー1

アクティビティにフラグメントを追加または置き換えることができます。FrameLayoutアクティビティ レイアウトxmlファイルを作成します。

次に、アクティビティでこれを実行します追加断片:

FragmentManager manager = getFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.add(R.id.container,YOUR_FRAGMENT_NAME,YOUR_FRAGMENT_STRING_TAG);
transaction.addToBackStack(null);
transaction.commit();

そして交換するフラグメントはこれを実行します:

FragmentManager manager = getFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.replace(R.id.container,YOUR_FRAGMENT_NAME,YOUR_FRAGMENT_STRING_TAG);
transaction.addToBackStack(null);
transaction.commit();

Androidのドキュメントを見るアクティビティにフラグメントを追加するまたはSOの関連する質問に従ってください:

add()、replace()、addToBackStack() の違い

Fragmentのadd()メソッドとreplace()メソッドの基本的な違い

フラグメントのライフサイクルにおける add() と replace() の違い

おすすめ記事