android 无法解析符号R.menu和R.id.menu_settings

oipij1gg  于 2023-10-14  发布在  Android
关注(0)|答案(2)|浏览(203)

我已经为这个问题挣扎了几个小时了,但我仍然不能解决这个问题。希望有人能帮我弄清楚我的代码发生了什么。
Android Studio无法解析代码中的符号menuaction_settings。我试图清理和重建和无效缓存/重新启动了很多次,但它并没有帮助解决我的问题。
这是我的MainActivity.java:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(**R.menu.menu_main**, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    int id = item.getItemId();

    if (id == **R.id.action_settings**) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}

我的代码有问题吗?很抱歉,我还是Android Studio的新手,希望你们能原谅我。

8ehkhllq

8ehkhllq1#

你需要有一个菜单xml文件与文件夹作为菜单下res。在新的Android Studio Activity中,它不会创建菜单文件夹,也不会为Activity创建菜单。
添加菜单文件夹后,需要手动添加menu_main.xml文件。之后,您可以使用下面的代码访问菜单。

Java:

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

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle item selection
        switch (item.getItemId()) {
            case R.id.logout:
                Intent intent_logout = new Intent(getApplicationContext(), LoginActivity.class);
                startActivity(intent_logout);
                return true;

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

ghhaqwfi2#

我也有类似的问题,但这是因为我使用了switch()。当我使用if/else if时,它工作得很好,这就是为什么我认为第一个答案不起作用。试试这个

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();

    if (id == R.id.action_settings) {
        return true;
    } else {
        return super.onOptionsItemSelected(item);
    {
}

相关问题