我有一个菜单项,我想以编程方式更改其可见性。菜单是这个
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/pencil"
android:orderInCategory="100"
android:showAsAction="always"
android:visible="true"
android:title="@string/for_pencil"/>
</menu>
然后在我的代码中
((MenuItem) findViewById(R.id. pencil)).setVisible(false);
错误:
E/AndroidRuntime(13845): FATAL EXCEPTION: main
E/AndroidRuntime(13845): java.lang.ClassCastException: com.android.internal.view.menu.ActionMenuItemView cannot be cast to android.view.MenuItem
有什么帮助解决这个问题吗?
由于您没有提供任何其他代码,因此我不能多说。
但是,无论何时要更改菜单,都应致电invalidateOptionsMenu()
。这样做是使菜单无效,这又迫使它重新创建。在其娱乐期间,回调之一是onPrepareOptionsMenu(Menu menu)
。您可以在此处更改菜单。
例子:
// This is where I want to change the menu. Can be anywhere in your activity.
invalidateOptionsMenu();
然后覆盖此方法
// Override this method to do what you want when the menu is recreated
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
menu.findItem(R.id.pencil).setVisible(false);
return super.onPrepareOptionsMenu(menu);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句