OnOptionsItemSelected方法出错

时间:2015-03-24 23:23:08

标签: java android

我收到了我写过的代码的错误消息。一切都应该没问题,因为这些示例使用相同的代码,但不知怎的,我得到了一个错误。错误消息显示:

  

令牌上的语法错误")",;预期      - 参数onOptionsItemSelected的非法修饰符;只有决赛是允许的      - 令牌上的语法错误"(" ,;预期

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 个答案:

答案 0 :(得分:0)

您不能在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;
    }

如果您正确格式化代码,这将有很大帮助。你的缩进搞砸了,这使得找到这样的错误变得更加困难。