根据登录状态扩展Android选项菜单
这是我的密码:根据登录状态扩展Android选项菜单,android,android-menu,android-optionsmenu,Android,Android Menu,Android Optionsmenu,这是我的密码: @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu, menu); SearchManager searchManager = (SearchManager) getSystemService(Context
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView searchView = (SearchView) menu.findItem(R.id.menu_search)
.getActionView();
searchView.setSearchableInfo(searchManager
.getSearchableInfo(getComponentName()));
searchView.setIconifiedByDefault(true);
searchView.setSubmitButtonEnabled(true);
return true;
}
@Override
public boolean onMenuOpened(int featureId, Menu menu) {
MenuItem Login = menu.findItem(R.id.Login);
MenuItem Logout = menu.findItem(R.id.Logout);
MenuItem About = menu.findItem(R.id.About);
MenuItem Profile = menu.findItem(R.id.Profile);
// set the menu options depending on login status
if (LoggedStatus == true) {
// show the log out option
Logout.setVisible(true);
Login.setVisible(false);
Profile.setVisible(true);
About.setVisible(true);
} else {
// show the log in option
Logout.setVisible(false);
Login.setVisible(true);
Profile.setVisible(false); // hide
About.setVisible(true);
}
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.Login:
Intent i = new Intent(this, Login.class);
startActivity(i);
return true;
case R.id.Logout:
return true;
case R.id.Profile:
return true;
case R.id.About:
return true;
default:
return super.onOptionsItemSelected(item);
}
}
我在四个菜单项的每个菜单项上都出现了Null指针异常。
我只需要一个登录菜单和一个注销菜单
编辑:这是一款利用操作栏、溢出菜单和安卓4.0的应用程序+
还有,更多的代码这里是menu.xml:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/menu_search"
android:actionViewClass="android.widget.SearchView"
android:icon="@android:drawable/ic_menu_search"
android:showAsAction="always"
android:title="search"/>
<item
android:id="@+id/Login"
android:title="Login"/>
<item
android:id="@+id/Logout"
android:title="Logout"/>
<item
android:id="@+id/Profile"
android:title="My Profile"/>
<item
android:id="@+id/About"
android:title="About"/>
</menu>
您可以在on prepareOptions功能表
中设置菜单项的可见性。试着搬到那里去
关于奖金:。在中,他们告诉您,每次按menu(菜单)时,都会调用On PrepareOptions功能表。我用一个按钮更改boolean
paramonClick
来显示/隐藏MenuItem
,四个MenuItem中的每一个都很好——这与我如何排序无关。通常我可以在onPrepareOptionsMenu
中设置MenuItem
的可见性。试着移动there@Yul就这样!继续并添加答案,我将标记正确。嘿,奖励点数;我让它工作了。但是如何在不刷新整个内容的情况下更改现有活动的菜单?现在,我必须转到另一个活动并返回以实际查看菜单更新。我在菜单类中没有看到此选项。您可以尝试删除菜单项并重新添加它们。似乎你想做一次,但不是每一次菜单交互。