[英]How to save state of fragment in navigation drawer
我正在通過以下鏈接使用Google導航抽屜庫... https://github.com/Arasthel/GoogleNavigationDrawerMenu
參見下面的代碼:
mDrawer.setOnNavigationSectionSelected(new GoogleNavigationDrawer.OnNavigationSectionSelected() {
@Override
public void onSectionSelected(View v, int i, long l) {
Fragment fragment = null;
switch (i) {
case 0:
// fragment = new HomeFragment();
break;
case 1:
fragment = new NewsFragment();
break;
case 2:
fragment = new TransferFragment();
break;
case 3:
fragment = new BlogsFragment();
break;
case 4:
fragment = new FixturesFragment();
break;
case 5:
fragment = new BestXIFragment();
break;
case 6:
fragment = new FeedFragment();
break;
default:
break;
}
if (fragment != null) {
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.main, fragment).commit();
} else {
// error in creating fragment
Log.e("MainActivity", "Error in creating fragment");
}
}
});
我的片段正在使用異步任務,每當我在這些片段之間切換時,異步任務就會再次加載。
那么,如何保存片段的狀態?
無需每次都創建一個新片段,而是可以保留一個片段數組並只返回相同的對象:
mDrawer.setOnNavigationSectionSelected(new GoogleNavigationDrawer.OnNavigationSectionSelected() {
Fragment[] fragments ={new HomeFragment(),new NewsFragment(), new TransferFragment(), new BlogsFragment(),new FixturesFragment() , new BestXIFragment(),new FeedFragment()};
@Override
public void onSectionSelected(View v, int i, long l) {
if (fragment[i] != null) {
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.main, fragments[i]).commit();
} else {
// error in creating fragment
Log.e("MainActivity", "Error in creating fragment");
}
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.