android - 可以只用一个实例创建 fragment 吗

标签 android android-fragments fragment android-fragmentactivity

我就想知道, fragment 创建只能有一个实例还是单例?
我也经历了 Google iosched 项目。他们只是创造

Fragment a = new Fragment();

只要他们想...

假设例如:

public static FragmentManager instance;

    public static FragmentManager getInstance() {
        if (instance == null) {
            instance = new FragmentManager();
        }
        return instance;
    }

    public TestFragment getTestFragment() {
        if (testFragment == null) {
            testFragment = new TestFragment ();
        }

        return  testFragment 
    }
}

我可以到处使用吗 FragmentManager.getInstance().getTestFragment() 用于交易?

例如:

getSupportFragmentManager()
    .beginTransaction()
    .replace(R.id.content_frame, FragmentManager.getInstance().getTestFragment())
    .commit();

或者操作系统自动销毁引用或与之相关的一些问题?

最佳答案

当您使用 getSupportFragmentManager().beginTransaction().replace 时,您可以添加第三个参数作为字符串,您可以将其用作标记,因此如果您想恢复以前的 fragment ,您可以可以使用 getSupportFragmentManager().findFragmentByTag(String),这样您就不必创建新 fragment 。

原来是这样

使用findFragmentByTag(String) 检查 fragment 是否存在,如果不存在,创建一个新 fragment 并调用getSupportFragmentManager().beginTransaction() .replace(R.id.content_frame, myFragment,myTag).commit(); 其中 myTag 是您将在 findFragmentByTag 中使用的字符串。这样您就不会为每种类型创建一个以上的 fragment 。

我希望它有一些意义:)

更多信息请查看thisthis

关于android - 可以只用一个实例创建 fragment 吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17154341/

相关文章:

java - 从 fragment 中调用 Activity 的方法

java.lang.IllegalStateException : Fragment already added :

android - 动态改变android :title in preference

android - CameraX Image 拍照慢

android - 膨胀类 fragment 时出错 | fragment 没有创建 View

android - 隐藏键盘时 fragment 事务的自定义动画消失

java - 为什么会出现 "IllegalStateException: Fragment already added"错误?

android - LinearLayout 中的多个 fragment

android - HoneyComb 上的 MonoDroid - 熄灯

android - 如何使用 android-async-http :1. 4.7 在 http post 设置超时?