2012-12-05 53 views
1

TLDR:使用手動創建的ID,而不是系統ID中,如果塊

我寧願使用的「2131427332」 shareButton「這一翻譯時,參照項目點擊,帶來了onCreateContextMenu()。我怎樣才能做到這一點?

說明:

我有兩個上下文菜單的活動。所以,在我的onCreateContextMenu()方法中,我檢索被點擊的項目的ID,並且膨脹相應的菜單。

但是 - 我知道如何做到這一點的唯一方法是使用v.getId(); - 這看起來很糟糕/奇怪,因爲我在我的if區塊中使用了系統生成的ID,而不是我自己創建的ID。有一個更好的方法嗎?這個id會改變嗎?我可以使用XML項目的ID而不是此自動生成的ID嗎?在R.

if(v.getId() == R.id.my_custom_id) 
{ 

} 

,我記得前一段時間的ID:

代碼:

/** 
* Opens the context menu(s) 
*/ 
@Override 
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) 
{ 
    super.onCreateContextMenu(menu, v, menuInfo); 
    MenuInflater inflater = getMenuInflater(); 
    if(v.getId() == 2131427332) 
    { 
     inflater.inflate(R.menu.share_menu, menu); 
    } 
    else if(v.getId() == 2131427329) 
    { 
     inflater.inflate(R.menu.options_menu, menu); 
    } 
} 

回答

3

你可以用你的IDS引用自動生成R.class

例如類是靜態的最後,但谷歌團隊改變它只是靜態,所以現在你不能在switch語句中使用它們,但可以隨意使用它們在你的鱈魚即

找到了!更多關於這裏:http://tools.android.com/tips/non-constant-fields

+0

完美,謝謝! – Dave

+0

我認爲我的minSdkVersion 8是這樣的,所以我只能在switch語句中使用整數? – Dave

+0

@Dave這兩個開關,如果將工作,它與API級別無關。圖書館項目只有一個問題:http://tools.android.com/tips/non-constant-fields – brillenheini

0

所以你有一個叫做shareButton的視圖。

你所要做的就是替換此:

if(v.getId() == 2131427332) { 
     inflater.inflate(R.menu.share_menu, menu); 
    } 

與此:

if(v.equals(shareButton)) { 
     inflater.inflate(R.menu.share_menu, menu); 
    } 

就這麼簡單!

+0

這會很棒,但它在Eclipse中顯示錯誤。 – Dave

+0

你可以請張貼一些代碼,並出現錯誤? –

相關問題