2012-11-05 48 views
2

我得到下面的代碼此消息:型家庭的方法onOptionItemSelected(菜單項)必須覆蓋一個超類方法

public boolean onOptionItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.x: 
      Log.i(Home, "klick"); 

     case R.id.y: 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 

,我總是得到這樣的錯誤:

The method onOptionItemSelected(MenuItem) of type Home must override a superclass method

我已經搜索整個互聯網,有一些帖子在stackoverflow,但! 我的編譯器設置爲1.6,我的項目沒有例外。

爲什麼要重寫超類方法?這種方法不是超類方法,我使用super.onOptions ...?

我想有一個@Override,因爲我已經看到它的地方,我的代碼似乎沒有工作沒有。

這是我的第一個問題,所以如果我忘記了一些東西,請不要太難。

回答

4

嘗試onOptionsItemSelected(..)

你缺少的 's',你onOptionItemSelected(..)

+3

鷹眼...... – dymmeh

+0

是的工作!謝謝你和你的鷹眼:D – Lesik2008

+1

不客氣。這就是爲什麼@Override非常有用。它爲你找到錯別字。否則,你會花費年齡試圖找出爲什麼你認爲是一個有效的回調方法,從來沒有被觸發。 – NickT

0

好了,我不知道爲什麼編譯器沒有找到超類方法,但是..這是問題。

如果你用@Override註釋你的方法,編譯器試圖在超類中找到方法,但它找不到它(perphaps,因爲方法的第一次發生是前兩個或三個類,而不是前立即

解決辦法:刪除@Override批註編譯器將不檢查超類方法,你的代碼將編譯好的

您的代碼將正常工作,而不標註

PD。對不起,我的英文很糟糕。ç

Upps。它是真的。該方法是onOptionsItemSelected與一個大's'。那爲什麼你的重寫註釋不起作用,編譯器沒有找到超類方法。

+0

(你的英語非常好) –

相關問題