我正在开发一个使用FragmentActivity实现标签的应用程序,因为标签在整个应用程序中都需要,所以广泛使用片段来使应用程序兼容所有版本的android。因此,我面临着一个问题,在可视化的碎片是目前在backstack上。我相信有一个的方法来检索的碎片列表目前在backstack上。谢谢。
FragmentActivity
um6iljoc1#
FragmentManager有以下方法:
getBackStackEntryCount()
getBackStackEntryAt(int index)**
FragmentManager fm = getFragmentManager(); for(int entry = 0; entry<fm.getBackStackEntryCount(); entry++){ Log.i(TAG, "Found fragment: " + fm.getBackStackEntryAt(entry).getId()); }
字符串
gcuhipw92#
我已经用这段代码(在Kotlin中)实现了在回栈中记录片段:
findNavController().backQueue.forEach { Log.d(TAG, "${it.destination}") }
字符串这段代码遍历导航返回堆栈中的每个条目,打印出Fragment的目标名称。
anhgbhbe3#
如果你想检查哪个片段是可见的,如果你知道片段所在的视图的id,首先你必须在onCreate()中添加下面的内容。
getSupportFragmentManager().addOnBackStackChangedListener(new OnBackStackChangedListener() { @Override public void onBackStackChanged() { Fragment f = getSupportFragmentManager().findFragmentById(R.id.content_frame); if (f != null){ updateActionBarTitle(f); } } }); private void updateActionBarTitle(Fragment fragment) { String fragClassName = fragment.getClass().getName(); if (fragClassName.equals(FirstFragment.class.getName())) { setTitle("Home"); } else if (fragClassName.equals(SecondFragment.class.getName())) { setTitle("Second"); } }
字符串这将在返回堆栈更改侦听器上更新您的操作栏标题。
3条答案
按热度按时间um6iljoc1#
FragmentManager有以下方法:
getBackStackEntryCount()
getBackStackEntryAt(int index)**
字符串
gcuhipw92#
我已经用这段代码(在Kotlin中)实现了在回栈中记录片段:
字符串
这段代码遍历导航返回堆栈中的每个条目,打印出Fragment的目标名称。
anhgbhbe3#
如果你想检查哪个片段是可见的,如果你知道片段所在的视图的id,首先你必须在onCreate()中添加下面的内容。
字符串
这将在返回堆栈更改侦听器上更新您的操作栏标题。