Android Activity 有两个片段:如何告诉系统我想将我的片段添加到哪个 FrameLayout 中?
Android Activity with two fragments: How to tell the system which FrameLayout I want to add my Fragment into?
假设一个 FragmentActivity
应该有两个不同的 Fragment
(并排,右边的宽度是左边宽度的两倍),它们将被动态添加。
我们如何告诉系统哪个 Fragment
进入哪个 FrameLayout
?
如果它是 Activity
中的单个 Fragment
,我将简单地覆盖 onCreateView()
,它将接收容器 FrameLayout
作为参数,并且我会 return Fragment
的膨胀布局。
但是现在我有两个 FrameLayout
和两个 Fragment
要添加到它们中,我如何告诉系统 Activity
中的哪个 FrameLayout
我要将我的 Fragment
添加到吗?
这个怎么样? :
SampleFragment1 fragment_1 = new SampleFragment1();
SampleFragment2 fragment_2 = new SampleFragment2();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.add(R.id.frameLayout1, fragment_1);
transaction.add(R.id.frameLayout2, fragment_2);
transaction.commit();
您可以在 FragmentActivity
的 onCreate(Bundle savedInstanceState)
方法中执行两个这样的 FragmentTransaction
:
交易 1
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.add(R.id.framelayout1, new Fragment1());
ft.commit();
交易 2
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.add(R.id.framelayout2, new Fragment2());
ft.commit();
假设一个 FragmentActivity
应该有两个不同的 Fragment
(并排,右边的宽度是左边宽度的两倍),它们将被动态添加。
我们如何告诉系统哪个 Fragment
进入哪个 FrameLayout
?
如果它是 Activity
中的单个 Fragment
,我将简单地覆盖 onCreateView()
,它将接收容器 FrameLayout
作为参数,并且我会 return Fragment
的膨胀布局。
但是现在我有两个 FrameLayout
和两个 Fragment
要添加到它们中,我如何告诉系统 Activity
中的哪个 FrameLayout
我要将我的 Fragment
添加到吗?
这个怎么样? :
SampleFragment1 fragment_1 = new SampleFragment1();
SampleFragment2 fragment_2 = new SampleFragment2();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.add(R.id.frameLayout1, fragment_1);
transaction.add(R.id.frameLayout2, fragment_2);
transaction.commit();
您可以在 FragmentActivity
的 onCreate(Bundle savedInstanceState)
方法中执行两个这样的 FragmentTransaction
:
交易 1
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.add(R.id.framelayout1, new Fragment1());
ft.commit();
交易 2
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.add(R.id.framelayout2, new Fragment2());
ft.commit();