gpt4 book ai didi

android - 如何重用已在 Navigation Drawer 上实例化的 fragment ?

转载 作者:行者123 更新时间:2023-11-29 01:05:35 26 4
gpt4 key购买 nike

我需要为每个导航项使用带有不同 fragment 的 android 抽屉导航,但我的问题是:

*如何保留 fragment 的实例并在触摸导航项时重用它们。

*我不想一次又一次地启动已经实例化的 fragment ,这会占用用户很多时间。

谁能帮帮我?

这是我的一段代码:

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();
}

最佳答案

当您替换您的 fragment 时,为它设置一个标签名称,以便稍后检索它以重用它。

getFragmentManager().beginTransaction().replace(R.id.fragmentContentPlaceHolder,yourFragment,"yourFragment").addToBackStack("yourFragment").commitAllowingStateLoss();

现在我们在堆栈中有一个名为 yourFragment 的 fragment

为了重用它,我们尝试通过标签名称找到它

  YourFragment yourFragment= (YourFragment)getFragmentManager().findFragmentByTag("yourFragment");

一切顺利!

关于android - 如何重用已在 Navigation Drawer 上实例化的 fragment ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47498284/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com