如何从 Activity 启动 Fragment

新手上路,请多包涵

我已经想从我的 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);

原文由 Savita 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.4k
2 个回答

您可以在活动中添加或替换片段。在活动布局 xml 文件中创建一个 FrameLayout

然后在您的活动中执行此操作以 添加 片段:

 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();

请参阅有关 向活动添加片段 或以下有关 SO 的相关问题的 Android 文档:

add()、replace() 和 addToBackStack() 之间的区别

Fragment的add()和replace()方法的基本区别

add() & replace() 与 Fragment 生命周期的区别

原文由 user4774371 发布,翻译遵循 CC BY-SA 3.0 许可协议

对于 kotlin,你可以这样做

val myFragment= WelcomeFragment() supportFragmentManager.beginTransaction().replace(R.id.fragment_containerID,myFragment).addToBackStack(null).commit()

原文由 Abdullah 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题