如何以编程方式隐藏动作栏android上的菜单?

问题描述 投票:0回答:1

这是我在操作栏上声明菜单的方式

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.actionbars, menu);
        myMenu = menu;
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) { switch(item.getItemId()) {
        case R.id.exit:
            //add the function to perform here
            mPrefs.setUserIsSignIn(false);
            Intent intent = new Intent(this, LoginActivity.class);
            startActivity(intent);
            finish();
            return(true);
    }
        return(super.onOptionsItemSelected(item));
    }

并且我想使用if if(不隐藏整个操作栏,只是菜单)从操作栏隐藏/删除菜单,我尝试使用“ myMenu.findItem(R.id.exit).setVisible(false);”但在空对象引用上发生错误

这是我的代码

public void checkUserType(){
        if (mPrefs.getUserType().equalsIgnoreCase("mahasiswa")){
            requestData(String.valueOf(mPrefs.getUserID()));
        } else if (mPrefs.getUserType().equalsIgnoreCase("dosen")){
            requestData(String.valueOf(mPrefs.getSelectedUserId()));
            getSupportActionBar().hide();
            myMenu.findItem(R.id.exit).setVisible(false);
        }
java android android-studio
1个回答
0
投票

这里只需调用invalidateOptionsMenu(),然后将逻辑移至onCreateOptionsMenu(),然后在此处更改可见性。

例如

override fun onCreate(savedInstanceState: Bundle?) {
    .
    .
    btn.setOnClickListener {
        invalidateOptionsMenu()
    }
    .
}

onCreateOptionsMenu()中>

override fun onCreateOptionsMenu(menu: Menu?): Boolean {
    menuInflater.inflate(R.menu.my_menu, menu)

    val menuItem = menu!!.findItem(R.id.menuItem)
    if (condition) {
        menuItem.isVisible = false
    } else {
        menuItem.isVisible = true
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.