【发布时间】:2014-08-02 22:03:11
【问题描述】:
我目前正在为我的 Android 应用程序使用导航抽屉。在我的第一个片段中,我有一个使用 Facebook 的 Graph API 加载数据的片段。因此,当我的 App 首次加载时,它首先会转到第一个片段。
然后,我使用导航抽屉单击另一个 Fragment 并查看它。
最后,我重用 Navigation Drawer 继续回到第一个 Fragment 并查看它。
我面临的问题是,我如何继续使用已创建一次的片段,而不是在选择导航抽屉项目时重新创建它。我的片段切换代码如下所示。
private void displayView(int position) {
// update the main content by replacing fragments
Fragment fragment = null;
switch (position) {
case 0:
fragment = new SelectionFragment();
break;
case 1:
fragment = new HomeFragment();
break;
case 2:
fragment = new PhotosFragment();
break;
case 3:
fragment = new CommunityFragment();
break;
case 4:
fragment = new PagesFragment();
break;
case 5:
fragment = new SplashFragment();
break;
default:
break;
}
if (fragment != null) {
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction()
.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");
}
}
我注意到每次选择该选项时确实有一个片段的“新”实例。如何实现创建 Fragment 实例 ONCE 并重用它的逻辑,这样我就不必一遍又一遍地不断加载 Fragment。
【问题讨论】:
-
你有没有看到用 FragmentStatePagerAdapter 替换 ArrayAdapter 的特殊方法?我也想知道同样的问题,但还没有真正看到有人真正做到这一点,我也没有(我一直懒惰尝试,不是因为不可能。)
标签: android android-fragments android-fragmentactivity navigation-drawer