如何从 Activity 启动 Fragment [英] How to start Fragment from an Activity
问题描述
我已经想从我的 MainActivity 启动我的 RecipientFragment 并将数据从我的 MainActivity 传递到 Fragment.这是我已经实现的代码.但是片段没有启动.
I already want to start my RecipientFragment from my MainActivity and pass data onto the Fragment from my MainActivity. Here is the code that I have implemented. But the fragment does not start.
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 中获取该数据.目前我有以下代码:
I also want to know how to pass intent.setData and get that data in Fragment. Currently I have below code:
收件人片段
mMediaUri = getActivity().getIntent().getData();
主活动
Intent recipientsIntent = new Intent(this, RecipientsFragment.class);
recipientsIntent.setData(mMediaUri);
推荐答案
您可以在活动中添加或替换片段.在活动布局 xml
文件中创建一个 FrameLayout
.
You can either add or replace fragment in your activity. Create a FrameLayout
in activity layout xml
file.
然后在您的活动中执行此操作以添加片段:
Then do this in your activity to add fragment:
FragmentManager manager = getFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.add(R.id.container,YOUR_FRAGMENT_NAME,YOUR_FRAGMENT_STRING_TAG);
transaction.addToBackStack(null);
transaction.commit();
并且要替换片段,请执行以下操作:
And to replace fragment do this:
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的相关问题:
See Android documentation on adding a fragment to an activity or following related questions on SO:
add()、replace() 和 addToBackStack() 之间的区别
add() 和replace() 与 Fragment 的生命周期
这篇关于如何从 Activity 启动 Fragment的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!