Android - onCreateOptionsMenu - 无法从片段中禁用 MenuItem
Android - onCreateOptionsMenu - Can't disable MenuItem from fragment
我正在尝试禁用我的导航抽屉中的 MenuItem
片段,但它就是行不通...
片段代码:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.waiting_for_terminal, container, false);
setHasOptionsMenu(true);
return rootView;
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.activity_main_drawer, menu);
menu.findItem(R.id.nav_amount).setEnabled(false);
menu.findItem(R.id.nav_return).setEnabled(false);
menu.findItem(R.id.nav_about).setEnabled(false);
menu.findItem(R.id.nav_settings).setEnabled(false);
super.onCreateOptionsMenu(menu, inflater);
}
我可以为 MenuItems 调用 getTitle(),它会 return 更正值。但由于某些原因 setEnabled()、setTitle()、setVisible() 等不起作用,值保持不变...
要禁用片段中的菜单项,请将其与片段一起使用:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(false);
}
删除 Activity 内的 onCreateOptionsMenu() 并在片段内使用:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.main, menu);
}
Try This:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
oldDescription= ActivityConstantUtils.sBlogDescriprtion;
setHasOptionsMenu(true);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menu_act_add_section, menu);
MenuItem item = menu.findItem(R.id.action_preview);
item.setIcon(null);
item.setTitle("");
super.onCreateOptionsMenu(menu, inflater);
}
我认为您正试图禁用 AppBar 上切换 NavigationDrawer 的主页按钮。
我能想到的最好的方法是:
在方法 onOptionItemSelected 中:
protected onOptionItemSelected(MenuItem item)
{
if(item.getItemId() == android.R.id.home)
{
// do anything you want here
}
}
这将帮助您覆盖主页按钮。
此外,如果您想用默认箭头图标替换汉堡包图标,您可以使用
mNavigationDrawer.setDrawerIndicatorEnabled(false);
此外,如果您还想禁用抽屉滑动功能,
你可以使用
drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
希望对您有所帮助。 :)
天哪,我的坏...
我想禁用 NavigationView 中的 MenuItems...
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.getMenu().findItem(R.id.nav_amount).setEnabled(false);
谢谢你的帮助:)
我正在尝试禁用我的导航抽屉中的 MenuItem 片段,但它就是行不通...
片段代码:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.waiting_for_terminal, container, false);
setHasOptionsMenu(true);
return rootView;
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.activity_main_drawer, menu);
menu.findItem(R.id.nav_amount).setEnabled(false);
menu.findItem(R.id.nav_return).setEnabled(false);
menu.findItem(R.id.nav_about).setEnabled(false);
menu.findItem(R.id.nav_settings).setEnabled(false);
super.onCreateOptionsMenu(menu, inflater);
}
我可以为 MenuItems 调用 getTitle(),它会 return 更正值。但由于某些原因 setEnabled()、setTitle()、setVisible() 等不起作用,值保持不变...
要禁用片段中的菜单项,请将其与片段一起使用:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(false);
}
删除 Activity 内的 onCreateOptionsMenu() 并在片段内使用:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.main, menu);
}
Try This:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
oldDescription= ActivityConstantUtils.sBlogDescriprtion;
setHasOptionsMenu(true);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menu_act_add_section, menu);
MenuItem item = menu.findItem(R.id.action_preview);
item.setIcon(null);
item.setTitle("");
super.onCreateOptionsMenu(menu, inflater);
}
我认为您正试图禁用 AppBar 上切换 NavigationDrawer 的主页按钮。
我能想到的最好的方法是:
在方法 onOptionItemSelected 中:
protected onOptionItemSelected(MenuItem item)
{
if(item.getItemId() == android.R.id.home)
{
// do anything you want here
}
}
这将帮助您覆盖主页按钮。
此外,如果您想用默认箭头图标替换汉堡包图标,您可以使用
mNavigationDrawer.setDrawerIndicatorEnabled(false);
此外,如果您还想禁用抽屉滑动功能, 你可以使用
drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
希望对您有所帮助。 :)
天哪,我的坏...
我想禁用 NavigationView 中的 MenuItems...
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.getMenu().findItem(R.id.nav_amount).setEnabled(false);
谢谢你的帮助:)