一般问题我可以将片段定义为单例吗?
特定问题在我的应用程序中,我有一个带有FragmentPager
的'FragmentActivity‘,它有两个片段,FragmentA
和FragmentB
。
我在FragmentA
扩展Fragment
类中将片段定义为单例:
private static instance = null;
public static FragmentA getInstance() {
if (instance == null) {
instance = new FragmentA();
}
return instance;
}
private FragmentA() {}
在我的FragmentPagerAdapter
中:
@Override
public Fragment getItem(int position) {
switch(position){
Fragment fragment = null;
case 0:
fragment = FragmentA.getInstance();
break;
case 1:
fragment = FragmentB.getInstance();
break;
}
return fragment;
}
这就是我如何扩展fragments布局的:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
fragmentView = (RelativeLayout) inflater.inflate(R.layout.fragment_a_layout, container, false);
return fragmentView;
}
My Problem:
当我第一次启动我的应用时,一切都运行得很好。当我关闭我的应用程序,然后重新启动它时,我看不到两个片段。
发布于 2013-02-13 02:26:41
片段是指应用程序的可重用组件。您不应该将它们作为单例使用,而应该实现Fragment.SavedState或onSavedInstanceState。
public class YourFragment extends Fragment {
// Blah blah blah you have a lot of other code in this fragment
// but here is how to save state
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("curChoice", mCurCheckPosition);
}
@Override
public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// savedInstanceState will have whatever you left in the outState bundle above
}
}
https://stackoverflow.com/questions/14839152
复制相似问题