Fragment as a singleton in Android(片段作为 Android 中的单例)
问题描述
一般问题我可以将片段定义为单例吗?
General Question Can I define Fragments as Singletons?
具体问题在我的应用程序中,我有一个带有 FragmentPager 的FragmentActivity",它有两个片段,FragmentA 和 FragmentB.
Specific question
In my application I have one 'FragmentActivity' with a FragmentPager which has two Fragments, FragmentA and FragmentB.
我在 FragmentA extends Fragment 类中将片段定义为单例:
I defined the fragments as Singletons in the FragmentA extends Fragment class:
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;
}
这就是我膨胀片段布局的方式:
and this is how I inflate the fragments layout:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
fragmentView = (RelativeLayout) inflater.inflate(R.layout.fragment_a_layout, container, false);
return fragmentView;
}
我的问题:
当我第一次启动我的应用程序时,一切正常.当我关闭我的应用然后重新启动它时,我没有看到这两个片段.
When I first launch my app everything works well. When I close my app and then restart it, I'm not seeing both of the fragments.
推荐答案
片段是应用程序的可重用组件.您不应该将它们用作单例,而应该实现 Fragment.SavedState 或 onSavedInstanceState.
Fragments are meant to be reusable components of applications. You should not be using them as singletons, instead you should implement Fragment.SavedState or 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
}
}
这篇关于片段作为 Android 中的单例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:片段作为 Android 中的单例
基础教程推荐
- iOS - UINavigationController 添加多个正确的项目? 2022-01-01
- 为什么姜饼模拟器方向卡在应用程序中? 2022-01-01
- Play 商店的设备兼容性问题 2022-01-01
- UIImage 在开始时不适合 UIScrollView 2022-01-01
- Android Volley - 如何动画图像加载? 2022-01-01
- 如何比较两个 NSDate:哪个是最近的? 2022-01-01
- Xcode UIView.init(frame:) 只能在主线程中使用 2022-01-01
- 如何将图像从一项活动发送到另一项活动? 2022-01-01
- navigationItem.backBarButtonItem 不工作?为什么上一个菜单仍然显示为按钮? 2022-01-01
- SwiftUI-ScrollViewReader的ScrollTo不滚动 2022-01-01
