我需要为每个导航项使用带有不同片段的android导航抽屉,但我的问题是:
*如何保留片段的实例并在触摸导航项时重复使用它们。
*我不想再次启动已经实例化的片段,一次又一次,用户需要花费很多时间。
任何人都可以帮助我吗?
这是我的一段代码:
public void selectDrawerItem(MenuItem menuItem) {
// Create a new fragment and specify the fragment to show based on nav item clicked
Fragment fragment = null;
Class fragmentClass;
switch(menuItem.getItemId()) {
case R.id.nav_inicio:
fragmentClass = DestaquesFragment.class;
break;
case R.id.nav_cardapio:
fragmentClass = CategoriasFragment.class;
break;
case R.id.nav_meusPedidos:
fragmentClass = MeusPedidosFragment.class;
break;
default:
fragmentClass = DestaquesFragment.class;
}
try {
fragment = (Fragment) fragmentClass.newInstance();
} catch (Exception e) {
e.printStackTrace();
}
// Insert the fragment by replacing any existing fragment
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.contentCompartilhado, fragment).commit();
// Highlight the selected item has been done by NavigationView
menuItem.setChecked(true);
// Set action bar title
setTitle(menuItem.getTitle());
// Close the navigation drawer
drawer.closeDrawers();
}
答案 0 :(得分:1)
当你替换你的片段时,为它设置一个标记名称,以便稍后检索它以重复使用它。
getFragmentManager().beginTransaction().replace(R.id.fragmentContentPlaceHolder,yourFragment,"yourFragment").addToBackStack("yourFragment").commitAllowingStateLoss();
现在我们在堆栈中有一个名为 yourFragment
的片段重复使用,我们尝试按标签名称
找到它 YourFragment yourFragment= (YourFragment)getFragmentManager().findFragmentByTag("yourFragment");
所有人都祝你好运!