我就想知道, 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 。
我希望它有一些意义:)
关于android - 可以只用一个实例创建 fragment 吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17154341/