Iwfu-保存Fragment切换时的UI状态/保存销毁Activity后再次进入的视图状态
来源:互联网 发布:凉凉网络用语 编辑:程序博客网 时间:2024/05/21 18:38
以下所说都是保存视图状态(UI状态),并不保存具体数据.
1-保存Fragment切换时的UI状态:
思路是:由于每次销毁然后重进Fragment会调用onCreateView创建一个新的 View对象,导致所有视图都销毁重建,所以我们自己保存一个静态的View对象,这样每次切换和退出到桌面后再次进入也会返回退出时的状态。
自定义Fragment,
public class MyBaseFragment extends Fragment { /* * 保证每次只有一个Fragment实例,子Fragment在onCreateView里加上这个方法 * * @param inflater 布局填充器 * * @param container 父布局 * * @param viewLayoutId 本fragment对应的布局文件 */ protected View justOneFragment(LayoutInflater inflater, ViewGroup container,View view, int viewLayoutId) { // 防止fragment重复创建,保存退出fragment时的UI状态 if (view == null) { view = inflater.inflate(viewLayoutId, container, false); } ViewGroup parent = (ViewGroup) view.getParent(); // 如果view已经被加到Activity中,则从中移除 if (parent != null) { parent.removeView(view); } return view; }}
然后子Fragment继承这个自定义的MyBaseFragment
public class Fragment1 extends MyBaseFragment { // 将本Fragment的View设置成static,以达到按回退键后销毁fragment,再次进入app,显示上一次退出时fragment状态的效果 // 但这个方法只能保存UI界面的状态,不可真正保存数据 private static View view1; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { view1 = justOneFragment(inflater, container, view1, R.layout.fragment1); return view1; }}
2–保存销毁Activity后再次进入的视图状态
将FragmentTabHost设置为静态的,保证再次进入使用的是同一个tabHost
// 定义FragmentTabHost对象 private static FragmentTabHost mTabHost; // Activity销毁时tab的位置 private static int currentTab;
activity销毁时保存退出时,tabhost选中的tab位置
@Override protected void onDestroy() { super.onDestroy(); currentTab = mTabHost.getCurrentTab(); Log.d("save", "ondestory---main--" + currentTab); Log.d("save", "ondestory---main--" + mTabHost); }
每次进入时就设置进入的页面与上次退出时相同
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.d("save", "oncreate---main---" + currentTab); Log.d("save", "oncreate---main--" + mTabHost); initView(); mTabHost.setCurrentTab(currentTab); }
0 0
- Iwfu-保存Fragment切换时的UI状态/保存销毁Activity后再次进入的视图状态
- Activity销毁时如何保存Fragment状态
- Fragment状态的保存
- Activity,Fragment状态保存
- Activity,Fragment状态保存
- Android组件:Fragment切换后保存状态
- Android组件:Fragment切换后保存状态
- Android组件:Fragment切换后保存状态
- 保存Activity的状态
- 保存Activity的状态
- 保存Activity的状态
- 保存Activity的状态
- Activity的状态保存
- activity的状态保存
- Activity状态的保存
- 保存Activity的状态
- 保存Activity的状态
- activity状态的保存。
- bzoj4537: [Hnoi2016]最小公倍数
- leetcode-3. Longest Substring Without Repeating Characters
- Java 中 & 和 && 的区别
- 32.JAVA编程思想——JAVA IO添加属性和接口
- 33.JAVA编程思想——JAVA IO File类
- Iwfu-保存Fragment切换时的UI状态/保存销毁Activity后再次进入的视图状态
- 原生js之道——原生js编写类选择器
- 有关字符串编程
- ACM刷题之HDU————Rank
- FZU 2148 Moon Game
- 6.时钟
- eclispe中打点不会提示的解决方法,以及自动补全
- 34.JAVA编程思想——JAVA IO 流典型应用
- 35.JAVA编程思想——JAVA IO StreamTokenizer