如何从 MenuItem 导航到片段 (Android)?
How can I navigate from the MenuItem to a fragment (Android)?
我有一个 MainActivity
和 3 个不同的片段。我在 MainActivity
中创建的工具栏出现在我拥有的所有 3 个片段中。我可以使用按钮在这些片段之间切换。
举个例子;
binding.buttonSelectFile.setOnClickListener(v -> NavHostFragment.findNavController(FirstFragment.this)
.navigate(R.id.action_FirstFragment_to_ThirdFragment));
我想为工具栏项创建类似的行为。例如,每次用户按如下定义的“帮助”项时,我希望应用程序导航到 HelpFragment
.
<menu
<!-- other items -->
<item
android:id="@+id/action_help"
android:orderInCategory="100"
android:title="@string/action_help"
app:showAsAction="never" />
</menu>
我试图在 MainActivity class 的 onCreate() 方法中做这样的事情,纯粹是猜测。
binding.toolbar.getMenu().getItem(R.id.action_help).setOnMenuItemClickListener(item -> {
Navigation.findNavController(view).navigate(R.id.HelpFragment);
return true;
});
但是,这个方法当然是不正确的。
可以这样用吗?或者我应该按照另一种方式向用户显示帮助屏幕?
I am calling the setSupportActionBar() method for it
因此,action_help
菜单项是默认选项菜单的一部分。然后你需要覆盖 onCreateOptionsMenu()
来膨胀菜单,并且 onOptionsItemSelected
来处理对 R.id.action_help
菜单项的点击。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.my_menu, menu); // replace "my_menu" with the name of your menu xml file
return true;
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
if (item.getItemId() == R.id.action_help) {
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment); // replace "nav_host_fragment" with the id of your navHostFragment in activity layout
navController.navigate(R.id.HelpFragment);
return true;
}
return super.onOptionsItemSelected(item);
}
我有一个 MainActivity
和 3 个不同的片段。我在 MainActivity
中创建的工具栏出现在我拥有的所有 3 个片段中。我可以使用按钮在这些片段之间切换。
举个例子;
binding.buttonSelectFile.setOnClickListener(v -> NavHostFragment.findNavController(FirstFragment.this)
.navigate(R.id.action_FirstFragment_to_ThirdFragment));
我想为工具栏项创建类似的行为。例如,每次用户按如下定义的“帮助”项时,我希望应用程序导航到 HelpFragment
.
<menu
<!-- other items -->
<item
android:id="@+id/action_help"
android:orderInCategory="100"
android:title="@string/action_help"
app:showAsAction="never" />
</menu>
我试图在 MainActivity class 的 onCreate() 方法中做这样的事情,纯粹是猜测。
binding.toolbar.getMenu().getItem(R.id.action_help).setOnMenuItemClickListener(item -> {
Navigation.findNavController(view).navigate(R.id.HelpFragment);
return true;
});
但是,这个方法当然是不正确的。
可以这样用吗?或者我应该按照另一种方式向用户显示帮助屏幕?
I am calling the setSupportActionBar() method for it
因此,action_help
菜单项是默认选项菜单的一部分。然后你需要覆盖 onCreateOptionsMenu()
来膨胀菜单,并且 onOptionsItemSelected
来处理对 R.id.action_help
菜单项的点击。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.my_menu, menu); // replace "my_menu" with the name of your menu xml file
return true;
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
if (item.getItemId() == R.id.action_help) {
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment); // replace "nav_host_fragment" with the id of your navHostFragment in activity layout
navController.navigate(R.id.HelpFragment);
return true;
}
return super.onOptionsItemSelected(item);
}