2012-01-21 34 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; 

希望这可以帮助你

相关问题