操作栏的主页button的onClick侦听器

我如何为Action Bar的Homebutton实现自定义onClickListener

我已经做了一个getSupportActionBar().setDisplayHomeAsUpEnabled(true); 现在我想redirect用户到一个特定的活动,如果主页button被点击。

我试着用:

 @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: item.setOnMenuItemClickListener(new OnMenuItemClickListener() { public boolean onMenuItemClick(MenuItem item) { Intent i = new Intent(); i.setClass(BestemmingActivity.this, StartActivity.class); i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(i); return true; } }); default: return super.onOptionsItemSelected(item); } } 

但它永远不会进入onMenuItemClick

基本上,就像在这个链接中一样,但它仍然不会进入监听器。

我们使用了actionBarSherlock ,之后我们设置了supportActionBar.setHomeButtonEnabled(true);
我们可以重写onMenuItemSelected方法:

 @Override public boolean onMenuItemSelected(int featureId, MenuItem item) { int itemId = item.getItemId(); switch (itemId) { case android.R.id.home: toggle(); // Toast.makeText(this, "home pressed", Toast.LENGTH_LONG).show(); break; } return true; } 

我希望这个为你工作~~~祝你好运

如果其他人需要解决scheme

 @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if (id == android.R.id.home) { onBackPressed(); return true; } return super.onOptionsItemSelected(item); } 

如果我们使用系统给出的操作栏,下面的代码工作正常

 getActionBar().setHomeButtonEnabled(true); @Override public boolean onMenuItemSelected(int featureId, MenuItem item) { int itemId = item.getItemId(); switch (itemId) { case android.R.id.home: //do your action here. break; } return true; } 

修正:无需使用setOnMenuItemClickListener 。 只要按下button,它就会通过意图创build并启动活动。

非常感谢大家的帮助!

如果在ICS上运行,则需要显式启用主页操作。 从文档 :

注意:如果您使用图标导航到家庭活动,请注意,从Android 4.0(API级别14)开始,您必须通过调用setHomeButtonEnabled(true)将该图标显式地启用为操作项目(在以前的版本中,图标默认情况下是作为操作项目启用的)。

最好的方法来自定义操作栏onClickListener是onSupportNavigateUp()

此代码将有助于帮助代码的链接

在发生的一半的一部分的答案。 如果在manifest.xml系统中的父活动设置为父活动时, onOptionsItemSelected不控制homeAsUpbutton。 在活动标签中使用如下所示:

 <activity ... > <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.activities.MainActivity" /> </activity> 

你应该删除你的覆盖onOptionsItemSelected并replate你的onCreateOptionsMenu这个代码

 @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_action_bar_finish_order_stop, menu); menu.getItem(0).setOnMenuItemClickListener(new FinishOrderStopListener(this, getApplication(), selectedChild)); return true; }