java - 如何从 onoptionsitemselected 访问所有菜单项

标签 java android android-activity menu menuitem

我有一个附加到工具栏菜单和两个MenuItems。它们也可以被选中或取消选中。当我选择项目“0”时,项目“1”应变为未选中状态,反之亦然。但除了在 onOptionsItemSelected() 函数中选择的菜单项之外,我无法访问任何其他菜单项。有没有办法访问 onCreateOptionsMenu() 之外的菜单项(从 onCreate() 等)?

我尝试创建名为“items_type”的公共(public)Menu变量,并在onCreateOptionsMenu()内将现有的“菜单”分配给它。不起作用... items_type.findItem() 仍然在 onCreateOptionsMenu 之外给出 NullPointerException

public Menu items_type;

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.items_type, menu);
        this.items_type=menu;
        return true;
    }

public boolean onOptionsItemSelected(MenuItem item)
{
items_type.findItem(R.id.<id_here>) // nullpointerexception error, that only works inside onCreateOptionsMenu and nowhere else. Any ideas?
}

最佳答案

你可以尝试这个方法:

 private boolean isChecked = false;

    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
         MenuItem checkable = menu.findItem(R.id.menu_switch_full_original);
         checkable.setChecked(isChecked);
         return true;
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // TODO Auto-generated method stub
        getMenuInflater().inflate(R.menu.a, menu);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // TODO Auto-generated method stub
        switch (item.getItemId()) {
        case R.id.menu_switch_full_original:
            isChecked = !item.isChecked();
            item.setChecked(isChecked);
            // your other functionality
            break;

        default:
            break;
        }
        return super.onOptionsItemSelected(item);
    }

关于java - 如何从 onoptionsitemselected 访问所有菜单项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57443131/

相关文章:

java - 重新启动 Activity 时调用 onStop 延迟

java - 在ViewPager中使用相同的 fragment ,但是每次 fragment 都会有不同的布局

android - 从我的 asynctask 调用的方法必须是静态的

javascript - 如何在Android 2.3中动态翻转图像

php - Android - PHP if else 不会停止

android - Activity 在 finish() 之后仍然继续;

java - (Datastax 4.1.0) (Cassandra)如何收集 session.executeAsync 的所有响应?

java - LinearLayout 上的 setMinimumHeight() 不起作用(在子类中)

java - 打开文件时出现异常

Android:更改布局时多次使用 setContentView 不好吗?