2011-04-25 124 views
15

我正在發生的錯誤,如:「類型oddg的方法的onClick(視圖)必須覆蓋一個超類方法:」我很困惑到底在哪發生錯誤.. 可以請你指導我,究竟是什麼錯誤?????奇數類型的onClick(View)方法必須覆蓋超類方法嗎?

public class oddg extends Activity implements OnClickListener 
    { 
      ProgressDialog dialog; 
      int increment; 
      int maximum ; 
      private static final String TAG = "ServicesDemo"; 




      @Override 
      public void onCreate(Bundle savedInstanceState) 
      { 
       super.onCreate(savedInstanceState); 
       setContentView(R.layout.main1); 
       Button startbtn = (Button) findViewById(R.id.startbtn); 
       startbtn.setOnClickListener(this); 

      } 


      @Override 
      public void onClick(View arg0) 
      { } 
    } 

這是我的代碼...在Advance-- Onkar

+0

對於沒有與父級或已實現的接口匹配的簽名的方法,您是否使用了@Override註釋?無論如何,你是否發佈了複製你的問題所需的完整的最小代碼,人們最好能夠幫助你。 – 2011-04-25 07:14:49

+0

@thane我已編輯我的Q.代碼,是的,我用@Override註釋,堅果我想爲它做什麼,請指導我.. – Smith 2011-04-25 07:20:27

回答

42

感謝我認爲問題是,你的編譯器設置被設置爲Java 1.5,而不是Java 1.6的。從Java 1.6開始,註解@Override不僅可以用於超類的繼承方法,還可以用於接口的已實現方法。但是如果你的編譯器仍然設置爲1.5,那麼問題是他會檢查你是否覆蓋超類的方法。在你的例子中,由於你是從一個接口實現一個方法,所以情況並非如此。

作爲一個側面說明,這將是很好的跟隨Java Naming Conventions在你的代碼。所以所有的課都以大寫字母開頭。

+0

我認爲是的,但如何更改編輯器的設置? – Smith 2011-04-25 07:21:49

+6

如果你正在使用Eclipse轉到Windows - >首選項 - > Java - >編譯器和更改編譯器符合性級別爲1.6 – RoflcoptrException 2011-04-25 07:23:35

+0

是的,它的工作thnaks很多... :) – Smith 2011-04-25 07:51:46

2

閱讀@Override註解。這意味着,如果它不是,一旦你註釋的方法與@Override,編譯器檢查,如果真的一個overrided方法,並顯示錯誤。

而且,你必須有語言級別6爲了與接口的實現方法使用它。在IDEA中,您可以通過Project Setup來完成。

9

我有同樣的麻煩,我固定它是這樣的:

  • 打開項目設置 - > Java編譯器
  • 啓用項目特定的設置disable
3

這ISN」 t直接適用於這個問題,但如果您尚未在類聲明中聲明implements OnClickListener,您也會得到此錯誤。

// Wrong 
public class aClass extends Activity { 
} 
// Right 
public class aClass extends Activity implements OnClickListener { 
} 

這似乎達姆更有經驗的編碼器,但我是新來的這一點,它愚弄了我。

0

「RoflcoptrException」 是對的!你應該將java編譯器設置爲1.6 項目屬性 - > Java編譯器 - > 1.6

2

我有同樣的問題。我發現解決方案寫得很好。

我更換

import android.content.DialogInterface.OnClickListener; //(wrong) 

import android.view.View.OnClickListener; 
+0

這是解決方案,不好導入 – 2014-02-26 21:16:33

+0

正確,我也解決了使用你的解決方案的問題。我的投票1+ – imdadhusen 2015-01-01 12:00:15

0

如果使用Android Studio中,您還可以通過按CTRL 覆蓋你的方法+ O或者只是去代碼 - >超越控制並重寫適當的方法。 它會自動覆蓋你的方法。

相關問題