令牌“else”上的语法错误删除此令牌

时间:2014-04-14 02:52:18

标签: android if-statement

我无法解决这个问题。它在else上返回错误。我尝试了所有其他具有相同问题的线程,但它没有工作。

@Override
public boolean onOptionsItemSelected(MenuItem item) { //this method is used for handling menu items' events
    // Handle item selection
    switch (item.getItemId()) {

        case R.id.goBack:
            if(myWebView.canGoBack()) {
                myWebView.goBack();
            }
            return true;

            else 
                return super.onOptionsItemSelected(item);{

                }

        }
    }

2 个答案:

答案 0 :(得分:0)

Eclipse抱怨,因为else语句不遵循if语句 - 中间有一个return true(顺便说一下,它会阻止执行后的任何代码)。修复缩进和代码格式化有助于发现(并防止)像这样的简单错误。

public boolean onOptionsItemSelected(MenuItem item) {
    // Handle item selection
    switch (item.getItemId()) {
    case R.id.goBack:
        if (myWebView.canGoBack()) {
            myWebView.goBack();
            return true;
        }
    }
    return super.onOptionsItemSelected(item);
}

答案 1 :(得分:0)

错误是因为在java(并且很可能是定义if...else块的任何编程语言(如c#,c,c ++等)中,else块(如果存在)必须正确在if块或else if语句定义之后,ifelse之间的任何其他语句都是非法的。但是,您在return块之前有一个else语句,这是非法且无用的,因为return语句之后的任何代码块都变得“无法访问”

您可以将代码更改为...

public boolean onOptionsItemSelected(MenuItem item) {
    // Handle item selection
    switch (item.getItemId()) {
        case R.id.goBack:
            if (myWebView.canGoBack()) {
            myWebView.goBack();
            return true;
        }
        break;
    default:
      return super.onOptionsItemSelected(item);
    }
}