我只是想知道,片段创建只能有一个实例或单例吗?
我经历了谷歌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()
用于交易?
eg:
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.content_frame, FragmentManager.getInstance().getTestFragment())
.commit();
或者操作系统自动销毁引用或与之相关的一些问题?
当你使用getSupportFragmentManager().beginTransaction().replace
您可以添加第三个参数作为可以用作标记的字符串,因此如果您想恢复以前的片段,可以使用getSupportFragmentManager().findFragmentByTag(String)
所以你不必创建一个新的片段。
所以会是这样的
使用检查片段是否存在findFragmentByTag(String)
如果不存在,则创建一个新片段并调用getSupportFragmentManager().beginTransaction() .replace(R.id.content_frame,myFragment,myTag).commit();
其中 myTag 是您将在 findFragmentByTag 中使用的字符串。这样您就不会为每种类型创建多个片段。
我希望这是有道理的:)
欲了解更多信息,请检查this http://developer.android.com/reference/android/app/FragmentTransaction.html#replace%28int,%20android.app.Fragment,%20java.lang.String%29 and this http://developer.android.com/reference/android/app/FragmentManager.html#findFragmentByTag%28java.lang.String%29
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)