[英]Saving state of fragment in navigation drawer
我在我的Android应用程序中使用导航抽屉。
每个片段都包含一个异步任务,该任务从Internet获取数据并显示在自定义列表中。
这是选择片段的代码:
private void displayView(int position) {
// update the main content by replacing fragments
Fragment fragment = null;
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction ft = fragmentManager.beginTransaction();
String TAG=null;
switch (position) {
case 0:
fragment = new HomeFragment();
TAG=new String("Home");
break;
case 1:
// fragment = new BlogsFragment();
fragment = new BlogsFragment();
break;
case 2:
// fragment = new NewsFragment();
fragment = new NewsFragment();
break;
case 3:
fragment = new TransferFragment();
break;
case 4:
fragment = new FixturesFragment();
break;
case 5:
fragment = new FeedFragment();
break;
case 6:
// fragment = new TwitterFragment();
fragment = new TwitterFragment();
break;
case 7:
// fragment = new FacebookFragment();
fragment = new FacebookFragment();
break;
case 8:
// fragment = new BookmarkFragment();
fragment = new BookmarkFragment();
break;
default:
break;
}
if (fragment != null) {
ft.replace(R.id.frame_container, fragment).commit();
// update selected item and title, then close the drawer
mDrawerList.setItemChecked(position, true);
mDrawerList.setSelection(position);
setTitle(navMenuTitles[position]);
mDrawerLayout.closeDrawer(mDrawerList);
}
else {
// error in creating fragment
Log.e("MainActivity", "Error in creating fragment");
}
}
但是,当我在片段之间切换时,异步任务再次开始加载数据。
那么如何保存片段状态
我在stackoverflow上尝试了所有可能的解决方案
请帮我
您只能在配置更改或任何其他条件时保存状态。 在您的情况下,每次加载新片段时,由于新片段而重新恢复其生命周期。 检查一下
我认为您需要为每个访问的片段缓存/存储服务器响应(异步任务结果)。 如果是JSON,则可以将其作为字符串存储在SharedPrefs中,然后从那里取回。 这也假设现金响应有一些过期时间来刷新它。
既然你做
ft.replace(R.id.frame_container, fragment).commit();
您可以完全销毁先前显示的片段。 您也可以使用addToBackStack()而不是replace或keepInstance状态。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.