Android 使用导航组件和菜单项,如何让“向上”按钮返回到上一个片段,而不是;“主要”;碎片
我使用的是导航组件架构。我在操作栏中有一个菜单项,用户可以单击该菜单项进入设置。我正在使用一个活动到多个片段的方法。因此,这个带有菜单项的操作栏跨越了我的所有片段 假设我有3个片段。片段A是主要片段。当我在设置首选项中时,“向上”按钮总是将我带回片段A。即使我从片段B或C调用它 下面是我所说的“向上”按钮(即所谓的“向上”按钮”)的意思: 这是我实际的Android 使用导航组件和菜单项,如何让“向上”按钮返回到上一个片段,而不是;“主要”;碎片,android,android-fragments,Android,Android Fragments,我使用的是导航组件架构。我在操作栏中有一个菜单项,用户可以单击该菜单项进入设置。我正在使用一个活动到多个片段的方法。因此,这个带有菜单项的操作栏跨越了我的所有片段 假设我有3个片段。片段A是主要片段。当我在设置首选项中时,“向上”按钮总是将我带回片段A。即使我从片段B或C调用它 下面是我所说的“向上”按钮(即所谓的“向上”按钮”)的意思: 这是我实际的NavGraph 从中可以看到Frag A通过一个动作链接到设置。我这样做是因为这是主片段,片段的宿主活动从这里开始。不管怎么说,这都没什么区
NavGraph
从中可以看到Frag A通过一个动作链接到设置。我这样做是因为这是主片段,片段的宿主活动从这里开始。不管怎么说,这都没什么区别。我删除了这个动作,但它的行为仍然是一样的
这是我的OnOptions ItemSelected
//Preform action when selected
@Override
public boolean onOptionsItemSelected(MenuItem item) {
return NavigationUI.onNavDestinationSelected(item, navController)
|| super.onOptionsItemSelected(item);
}
那么,如果从片段C转到设置,如何回到片段C,而不是片段A
那么,如果从片段C转到设置,如何回到片段C,而不是片段A
我假设您已经将导航操作从片段C添加到设置片段,以便您可以从片段C
导航到设置片段
因此,以下是导航图中此操作的演示示例:
<fragment
android:id="@+id/cFragment"
android:name="...."
android:label="fragment_c"
tools:layout="@layout/fragment_c" >
....
<action
android:id="@+id/action_cFragment_to_settingsFragment"
app:destination="@id/settingsFragment"
app:popUpTo="@id/cFragment" />
</fragment>
注意:如果在其他片段上看到home按钮,可以通过以下方式将其删除:
setHasOptionsMenu(false);
((AppCompatActivity) requireActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(false);
NavigationUI
包含处理菜单项的onNavDestinationSelected
方法。默认情况下,此方法将弹出整个后堆栈。修复方法是为菜单中的项目将android:menuCategory=“secondary”
添加到xml中,如下所述:
太好了,我们明天将尝试实施。@COYG请放心:)。。我试着实现它,但没有任何乐趣,所以不得不进一步研究。修复方法简单得多,但我不得不去找它。看看我的答案,我是如何解决的。
setHasOptionsMenu(false);
((AppCompatActivity) requireActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(false);