[英]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.