通过一个函数创建不同的片段类型

时间:2012-01-18 17:01:06

标签: java android

我的Activity中需要一个函数,它将片段设置为我的ViewGroup(在本例中为FrameLayout)。当然,我可以使用这样的结构:

public void setFragment(Fragment fragment){
    FragmentManager fm=getFragmentManager();
    //etc
}

但是使用这个解决方案我需要在其他地方创建fragment,而不是在我的函数中。因此,如果课程MyFragment延伸Fragment,我需要这样的内容:

setFragment(MyFragment);

有可能吗? 我可以将class作为函数的参数传递,然后创建它的实例

如果不是 - 在函数后面创建片段是不是一个坏主意?像

MyFragment my=new MyFragment();
setFragment(my);

1 个答案:

答案 0 :(得分:1)

如果两个片段使用相同的布局,那么你可以做这样的事情

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

片段参数从通常在onCreate()

中初始化的位置传入

如果您需要同时显示片段,则需要另外FrameLayout替换。

希望能回答你的问题,如果不让我知道

编辑2:

噢,我看到你现在要通过课,对不起。据我所知你不能这样做,传入一个已经初始化的片段将是一个比我在第一次编辑之前更好的解决方案