2012-01-21 40 views
26

我目前正在開發一個Android應用程序。我想使用操作欄中的應用程序圖標導航到「主頁」活動。我在this頁面上閱讀了所有需要完成的工作,即添加一個onOptionsItemSelected並查找編號android.R.id.home單擊應用程序圖標不會觸發onOptionsItemSelected()

這是我在我的活動中實施的代碼,我想要按應用程序圖標返回到HomeActivity

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch(item.getItemId()) { 
    case android.R.id.home: 
     Intent intent = new Intent(this, HomeActivity.class); 
     intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     startActivity(intent); 
     return true; 
    default: 
     return super.onOptionsItemSelected(item); 
    } 
} 

然而,沒有任何反應。調試時,我可以看到點擊圖標根本不會觸發onOptionsItemSelected()。我需要在某個地方對圖標做些什麼嗎?截至目前,這一切都默認情況下,僅這在AndroidManifest.xml

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" > 
+0

我只曾經試過響應添加到具有選項菜單的活動中的操作欄圖標。暫時添加一個選項菜單,看看是否改變了你看到的行爲。 – CommonsWare

+0

還要考慮傳遞標誌['FLAG_ACTIVITY_SINGLE_TOP',避免重新啓動活動](http://stackoverflow.com/a/18658364/356895)。 – JJD

+2

我的問題是我在'onOptionsItemSelected'我有'R.id.home'而不是'android.R.id.home'讓我瘋狂! – mbwasi

回答

40

對於包靶向API 14級開始,你需要通過調用setHomeButtonEnabled()

在你的onCreate以使家庭按鈕,添加以下內容:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { 
    getActionBar().setHomeButtonEnabled(true); 
} 
+4

也想爲那些使用ActionBarSherlock的人添加這個。 'getSupportActionBar()。setHomeButtonEnabled(true);' – euniceadu

4

如果你使用Android新的支持,動作條(AppCompat),你需要做兩個通話。

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { 
    getActionBar().setHomeButtonEnabled(true); 
} 
getSupportActionBar().setHomeButtonEnabled(true); 
+2

getActionBar()返回null與AppCompat ... – bk138

0

我不知道我們是否有同樣的問題。

但是,我在這個問題現在解決了..

你添加

case android.R.id.home: 
    Intent intent = new Intent(this, HomeActivity.class); 
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    startActivity(intent); 
    return true; 

在HomeActivity? 這是假的..

你應該把這些代碼對你secondActivity .. 因爲secondActivity你的home鍵,不HomeActivity

case android.R.id.home: 
    NavUtils.navigateUpFromSameTask(this); 
    true; 

希望這可以幫助你

相關問題