2012-09-14 52 views
0

我做了一個應用程序OB Nyt,在Froyo和以下版本上運行良好 - 但是在ICS和上面,當我單擊菜單按鈕(更新鏈接,鏈接到圖像活動和鏈接到搜索活動)時,沒有任何反應。當我點擊ICS上的按鈕時,手機上的按鈕亮起 - 但這些活動並未像在Froyo上那樣開啓。我修改了ActionBarSherlock很少。我從吐司消息中知道點擊是在ICS中註冊的。但活動並未開始。在LogCat我得到一個Actionbarsherlock:菜單按鈕在Froyo中工作,但不是ICS?

window already focused ignoring focus gain of com.android.internal.view.iinputmethodclient 

每次我點擊其中一個按鈕。我有一個猜測,也許是在這裏的問題可能是:

public boolean onCreateOptionsMenu(Menu menu) { 
    //Used to put dark icons on light action bar 
    boolean isLight = true; 


    menu.add("Save") 
     .setIcon(isLight ? R.drawable.ic_stilling1 : R.drawable.ic_stilling1) 
     .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); 

    menu.add("Search") 
     .setIcon(isLight ? R.drawable.ic_search_inverse : R.drawable.ic_search) 
     .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); 

    menu.add("Opdatér") 
     .setIcon(isLight ? R.drawable.ic_refresh_inverse : R.drawable.ic_refresh) 
     .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); 

    return true; 
} 

public boolean onOptionsItemSelected(MenuItem item) { 
    //This uses the imported MenuItem from ActionBarSherlock 
    Toast.makeText(this, "Got click: " + item.toString(), Toast.LENGTH_SHORT).show(); 

    if (item.toString()=="Save"){ 

     startActivity (new Intent(getApplicationContext(), F3Activity.class)); 

     return true; 
    } 

    if (item.toString()=="Search"){ 

     startActivity (new Intent(getApplicationContext(), SearchActivity.class)); 

     return true; 
    } 

    if (item.toString()=="Opdatér"){ 

     startActivity (new Intent(getApplicationContext(), ABSTabsViewPagerActivity.class)); 

     return true; 
    } 



    return true; 
} 

正如你可以看到我在編程菜鳥:-)有沒有人對我怎麼能得到的按鈕反應的線索在ICS中?我已經在我自己的舊HTC Desire和ICS上對我的朋友們的三星Galaxy II和III進行了果凍豆測試,測試結果完全相同。

[編輯]:這使得它的工作:

if (item.getTitle()=="Save") 

,而不是

if (item.toString()=="Save") 

初學者的錯誤,我知道這;-)

+0

ActionBarSherlock中99.9%的事物在2.x以上的每個平臺上工作。菜單不在.1% – hwrdprkns

+0

如果我想確保它們在ICS/ABS中打開,我可以用其他方式啓動這些活動嗎? – bengaard

+0

我還會返回super.onXYZ,而不是同時使用這兩種方法 - 具體而言,如果您的某個條件在第二種方法中未得到滿足。 – hwrdprkns

回答

1

使用String.equals(String)進行字符串比較。正確的做法是

if ("Save".equals(item.getTitle())) 

考慮給你的菜單項的ID,並使用該搞清楚它被點擊來代替。

-2

這使得它的工作:

if (item.getTitle()=="Save") 

而不是

if (item.toString()=="Save") 
相關問題