2013-01-05 25 views
1

我在我的主要活動機器人如何改變行動項目冠軍onOptionsItemSelected

public boolean onOptionsItemSelected(MenuItem item) { 

    int itemId = item.getItemId(); 

    if (itemId == R.id.menu_edit) { 

     CharSequence title = item.getTitle(); 
     Log.d("onOptionsItemSelected", "menu_edit title=" + title); 
     if(title=="Edit") { 
      // switch to RUn 
      item.setTitle("Run"); 
     } else { 
      // switch to Edit 
      item.setTitle("Edit"); 
     } 
    } 

    return super.onOptionsItemSelected(item); 

} 

此代碼按鈕被這樣定義

android:id="@+id/menu_edit" 
    android:orderInCategory="102" 
    android:showAsAction="ifRoom|withText" 
    android:title="Edit"/> 

的基本思路是「編輯」按鈕切換到「運行」並按下後退。它有點工作,除了第一次按它它什麼也沒做,然後它工作正常:注意這是一個項目在操作欄上,而不是在菜單中,所以我不認爲onPrepareOptionsMenu有幫助,因爲它沒有被按下時按下按鈕在操作欄上。

有人可以建議一種方法來獲得第一次點擊以setTitle工作?

感謝

回答

2

替換:

if(title=="Edit") { 

有:

if(title.equals("Edit")) { 

,也將努力在第一時間太多。

+0

酷,謝謝,你是對的它的工作原理。但爲什麼? – steveh

+0

,因爲==和equals之間的差別適用於字符串。看看這個問題http://stackoverflow.com/questions/767372/java-string-equals-versus –

0

最好使用equalIgnoreCase而不是平等 作爲equalignorecase忽略CP的情況下,開/關按鈕...