java - 通过一个函数创建不同的 fragment 类型

标签 java android

我的 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/

相关文章:

java - C# 相当于 Javas Guavas Maps.uniqueIndex

android - 出现软键盘时布局不会向上推

java - 尝试返回 JSON 时,Jax-RS 错误 500 无异常

java - Getter 和 Setter 位置

java - 在自定义可写对象中定义集合

java - 从另一个类调用时,AsyncTask 中的 getActivity() 返回 null

android - 如何在打开cv的情况下设置透明背景以抓取输出图像?

java - 如何在java或android中以相反的顺序对对象数组列表进行排序?

android - RelativeLayout 子间距

java - jdbc mysql连接