2012-09-21 216 views
2

我對Android非常陌生,所以很抱歉如果我的問題看起來很基本。我昨晚都在查找它,並找不到解決方案(這讓我覺得我可能在我試圖實現的方面存在根本性缺陷)。將變量傳遞給onOptionsItemSelected

基本上,我想從onOptionsItemSelected中調用一個方法。在Android開發者文檔(http://developer.android.com/guide/topics/ui/menus.html)他們給這個例子:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
// Handle item selection 
switch (item.getItemId()) { 
    case R.id.new_game: 
     newGame(); 
     return true; 
    case R.id.help: 
     showHelp(); 
     return true; 
    default: 
     return super.onOptionsItemSelected(item); 
} 
} 

然而,在我的申請,我有需要的輸入法通過onOptionsItemSelected調用。在我從Android開發者網站上使用的例子的情況下,這將等同於我希望整數「敏」傳遞給newGame方法:

@Override 
public boolean onOptionsItemSelected(MenuItem item, int myint) { 
// Handle item selection 
switch (item.getItemId()) { 
    case R.id.new_game: 
     newGame(myint); 
     return true; 
    case R.id.help: 
     showHelp(); 
     return true; 
    default: 
     return super.onOptionsItemSelected(item); 
} 
} 

當我這樣做,Eclipse附帶了一個錯誤的行「公共布爾onOptionsItemSelected(MenuItem項目){」說我需要刪除「@Override」命令。

我一直沒有找到任何互聯網上的例子,人們通過onOptionsItemSelected(或像onConfigurationChanged這樣的方法)傳遞變量,這就是爲什麼我認爲我可能對這個工作有一個基本的誤解。不幸的是,我不確定從何處着手解決這個問題。目前我使用的是「公共靜態」變量,所以我的方法(本例中爲newGame)可以訪問它們,但我意識到這些類型的變量的使用似乎通常被忽略。

如果有人能夠幫助我,甚至指向我需要搜索/閱讀的方向,我將非常感激。

感謝

斯蒂芬

+0

這是你的菜單的代碼?你在做遊戲嗎? –

+0

這只是我從Android開發者網站上獲得的一個例子。我的實際應用是一個詞彙測試應用程序。使用谷歌的無雜亂代碼似乎更容易,我知道它是無差錯的! – Stephen

回答

1

你可以有一個私人非靜態變量在類,當你選擇菜單項,你可以讀到:

case R.id.new_game: 
    newGame(this.myint); 
    return true; 

而且必須在您的班級的頂部:

您只需確保您有一個VA在用戶點擊菜單項之前將lue分配給它!

+0

太棒了,謝謝。實現起來也比我期待的要容易得多! – Stephen