当前位置: 首页 > 知识库问答 >
问题:

参数OnOptions ItemSelected方法的修饰符非法

边霄
2023-03-14

我写的代码有一个错误消息。一切都应该是好的,因为这些例子都有相同的代码,但是不知何故我得到了一个错误。错误消息说:

期望令牌上 ")",; 语法错误-参数onOptionsItem选择的非法修饰符;只允许最终-期望令牌 "(",; 语法错误

    public boolean onCreateOptionsMenu(android.view.Menu menu) {
        super.onCreateOptionsMenu(menu);
        MenuInflater awesome = getMenuInflater();
        awesome.inflate(R.menu.main_menu, menu);
        return true;

    public boolean onOptionsItemSelected (MenuItem item){
        switch(item.getItemId()){
            case R.id.menuSweet:
                startActivity(new Intent("com.example.startandroidkj.SWEET"));
                return true;
            case R.id.menuToast:
                Toast andEggs =Toast.makeText(menu.this,"this is a toast", Toast.LENGTH_LONG);
                andEggs.show();
                return true;
        }

        return false;
    }

共有1个答案

东方权
2023-03-14

Java中不能有嵌套方法。基本上,编译器认为您正在定义一个局部变量,并抱怨它的修饰符。

只需在第四行代码后添加缺少的onCreateOptionsMenu()右括号。

public boolean onCreateOptionsMenu(android.view.Menu menu)
{
        super.onCreateOptionsMenu(menu);
    MenuInflater awesome=getMenuInflater();
    awesome.inflate(R.menu.main_menu, menu);
    return true;
} // <----------------------- Missing closing brace
     public boolean onOptionsItemSelected (MenuItem item){
        switch(item.getItemId()){
        case R.id.menuSweet:
            startActivity(new Intent("com.example.startandroidkj.SWEET"));
            return true;
        case R.id.menuToast:
            Toast andEggs =Toast.makeText(menu.this,"this is a toast", Toast.LENGTH_LONG);
            andEggs.show();
            return true;

        }

        return false;
    }

如果你能正确地格式化你的代码,这会有很大帮助。你的缩进是混乱的,这使得很难找到这样的错误。

 类似资料:
  • 我是爪哇的新手,我想在爪哇做一个学校的任命。这是一个遵循MVC模式的小游戏(我不知道它应该如何工作,我所了解的只是这个方法在“包”中分离代码,所以我们只需要修改一些包中的元素,例如,使游戏看起来完全不同;对吗?)。 因此,我们使用JFrame和JPanel包创建了一个启动框架。现在是时候在控制器包中的类名“Control”中创建main()方法了: 现在,我的老师要求我:“私下声明StartupG

  • 我目前正在从我找到的教程在Eclipse中构建一个应用程序,但我在代码中有错误。 我在下面包含了主要活动文件(MainActivity.java): 错误是这样写的 存在“变量levelNames的非法修饰符;只允许使用final” 有人有什么想法吗?

  • 以下代码有什么问题 字符串引用名称显示编译错误-Java错误-参数名称的修饰符非法-仅允许使用final 我同意下面给出的建议,但我想了解为什么这是不允许的,尽管两者都是静态的?

  • 我正在编写代码以匹配给定字符串或行的方法声明。这就是我的问题所在。当试图匹配修饰符时,当声明 工作。我一直都是这样 这就是我的问题。两者有什么区别,所有修饰符都一样吗?我相信这是有原因的,松散的顺序不是设计决定。 哦,如果有人知道匹配给定字符串的方法的最佳方法,请告诉我。谢谢。现在我正在使用正则表达式。

  • 我目前在一个项目中处理Java的自定义注释。我想强制注释的用户,如果他用@Foo注释了方法,他必须在方法参数列表中声明至少一个。所以它应该是这样的: 使用注释处理器,我可以检索变量的类型,但不能检索最终的修饰符。如果我想检索下面代码中所示的修改器集,那么该集将始终为空,尽管最后一个修改器出现在参数上。 有什么想法,为什么会这样?

  • 所以我对Java还是新手,所以这可能真的很愚蠢,但我找不到答案,所以我们开始吧!在我的代码的开头,我试图简单地用“public class robot{}”来声明这个类,然而,它给了我一个错误“本地类的非法修饰符___;;只允许使用抽象或final”。我在互联网上看到的每一个地方,它都说不要称之为静态类,但我不是!!!这可能真的很蠢,我还不知道,因为我还是新手。请帮忙!这是我的代码: