Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
根据登录状态扩展Android选项菜单_Android_Android Menu_Android Optionsmenu - Fatal编程技术网

根据登录状态扩展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
param
onClick
来显示/隐藏
MenuItem
,四个MenuItem中的每一个都很好

——这与我如何排序无关。通常我可以在
onPrepareOptionsMenu
中设置
MenuItem
的可见性。试着移动there@Yul就这样!继续并添加答案,我将标记正确。嘿,奖励点数;我让它工作了。但是如何在不刷新整个内容的情况下更改现有活动的菜单?现在,我必须转到另一个活动并返回以实际查看菜单更新。我在菜单类中没有看到此选项。您可以尝试删除菜单项并重新添加它们。似乎你想做一次,但不是每一次菜单交互。