如果共享首选项为false,我正在尝试隐藏Actionbar菜单项。
我正在按照自己的意愿获取共享偏好,但菜单项不会隐藏。
// Inflate a menu to be displayed in the toolbar
toolbar.inflateMenu(R.menu.activity_main_actionbar);
// Enable disable set start page item
if(!sharedPref.getBoolean("enable_custom_startpage", false)) {
toolbar.getMenu().findItem(R.id.setasstartpage).setVisible(false);
}
我做错了什么?
答案 0 :(得分:4)
这样做的正确位置是setNoAccessTokenPolicy
。来自docs,
准备要显示的屏幕标准选项菜单。这是 每次显示菜单时,都会在菜单显示之前调用。您可以 使用此方法有效地启用/禁用项目或其他 动态修改内容。
因此,我建议您覆盖onPrepareOptionsMenu
,然后检查其中的共享首选项并相应地显示菜单。像,
onPrepareOptionsMenu
答案 1 :(得分:1)
试试这个
def tupleNonTrivialSumation(s):
'''return a 3-tuple of x,y,z : x+y+z=0 & the list does not contain (0,0,0)'''
return tuple([(x,y,z) for x in s for y in s for z in s if x+y+z==0 if abs(x)+abs(y)+abs(z)!=0])`
我希望它对你有用。
答案 2 :(得分:0)
试试这个
invalidateOptionsMenu();
我希望它对你有所帮助。
答案 3 :(得分:0)
获取指向此项目的MenuItem,调用其上的setVisible以调整其可见性,然后在您的活动上调用invalidateOptionsMenu(),以便相应地调整ActionBar菜单。
更新:MenuItem不是布局的常规视图。它的特殊之处,完全不同。您的代码为item返回null,这导致崩溃。你需要做的是:
MenuItem item = menu.findItem(R.id.addAction);
答案 4 :(得分:0)
首先在活动中全局保存菜单 -
Menu menuu;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
menuu=menu;
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
为您提供不同的menu.xml。一个是noitem而另一个是 包含你想要的物品。
menu_main.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.afixi.prasenjeetpati.notification_service.MainActivity">
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:title="@string/action_settings"
app:showAsAction="never" />
</menu>
menu_blank.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.afixi.prasenjeetpati.notification_service.MainActivity">
</menu>
现在可以随时删除选项菜单 -
menuu.clear();
getMenuInflater().inflate(R.menu.menu_blank, menuu);
并取回正常菜单 -
menuu.clear();
getMenuInflater().inflate(R.menu.menu_main, menuu);