我的 Activity 中需要一个函数,将 fragment 设置为我的 ViewGroup(本例中为 FrameLayout)。当然,我可以使用这样的构造:
public void setFragment(Fragment fragment){
FragmentManager fm=getFragmentManager();
//etc
}
但是使用这个解决方案,我需要在其他地方创建 fragment
,而不是在我的函数中。因此,如果类 MyFragment
扩展 Fragment
,我需要这样的东西:
setFragment(MyFragment);
这可能吗? 我可以将类作为函数的参数传递,然后创建它的实例
如果不是 - 在函数后面创建 fragment 是不是一个坏主意?喜欢
MyFragment my=new MyFragment();
setFragment(my);
最佳答案
如果两个 fragment 使用相同的布局,那么你可以这样做
public void setFragment(){
Fragment newFragment;
if(displayFragOne){
newFragment = new MyFragment();
}else if(displayFragTwo){
newFragment = new OtherFragment();
}
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(r.id.the_id_of_layout,fragment).addToBackStack(null).commit();
}
fragment 参数通常从您在onCreate()中初始化它的地方传入
如果您需要同时显示 fragment ,那么您需要另一个 FrameLayout
来替换。
希望能回答您的问题,如果没有请告诉我
编辑2:
哦,我知道你现在想通过一门课,抱歉。据我所知你不能这样做,传递一个已经初始化的 fragment 将是一个更好的解决方案,就像我在第一次编辑之前一样
关于java - 通过一个函数创建不同的 fragment 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8914143/