操作栏的主页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
不控制homeAsUp
button。 在活动标签中使用如下所示:
<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; }