方法...必须覆盖超类方法(最新的SDK)

时间:2012-07-02 17:28:44

标签: java android

  

可能重复:
  Why do I get “must override a superclass method” with @Override?

我最近在新机器上设置的新eclipse中安装了最新的Android SDK。当我在几个地方带来一个旧项目时,我得到了一个语法错误,关于@Override说“方法suchands这样的类型suchandsuch必须覆盖超类方法”。这些项目是通过删除@Override来修复的(我认为这是正确的。)

我刚刚使用我的新设置制作了我的第一个新项目,并且最初未触及的代码正在发出此错误让我感到困惑。

package com.geeksonhugs.whenimclose;

import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.NavUtils;
import android.view.MenuItem;

public class ItemListActivity extends FragmentActivity
        implements ItemListFragment.Callbacks {

    private boolean mTwoPane;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_item_list);

        if (findViewById(R.id.item_detail_container) != null) {
            mTwoPane = true;
            ((ItemListFragment) getSupportFragmentManager()
                    .findFragmentById(R.id.item_list))
                    .setActivateOnItemClick(true);
        }
    }

    @Override
    public void onItemSelected(String id) {
        if (mTwoPane) {
            Bundle arguments = new Bundle();
            arguments.putString(ItemDetailFragment.ARG_ITEM_ID, id);
            ItemDetailFragment fragment = new ItemDetailFragment();
            fragment.setArguments(arguments);
            getSupportFragmentManager().beginTransaction()
                    .replace(R.id.item_detail_container, fragment)
                    .commit();

        } else {
            Intent detailIntent = new Intent(this, ItemDetailActivity.class);
            detailIntent.putExtra(ItemDetailFragment.ARG_ITEM_ID, id);
            startActivity(detailIntent);
        }
    }
}

编译器在onCreate之前接受@Override但是使用onItemSelected给出错误。有人可以请你澄清一下发生了什么事吗?在以前的版本中,这种语法错误再次发生吗?

1 个答案:

答案 0 :(得分:6)

我认为您正在使用java compiler 1.5,将其设为1.6,因为@Override of interface's methods is introduced after 1.5.

在Eclipse中,

  

窗口 - >偏好 - > Java - >编译器 - >编译器合规性级别 - >选择   1.6