操作栏的 onClick 监听程序用于 Home 按钮

我如何实现一个自定义 onClickListener的行动栏的首页按钮?

我已经做了一个 getSupportActionBar().setDisplayHomeAsUpEnabled(true);,现在我想重定向用户到一个特定的活动,以防主页按钮被点击。

我试着说:

@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

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

105239 次浏览

You need to explicitly enable the home action if running on ICS. From the docs:

Note: If you're using the icon to navigate to the home activity, beware that beginning with Android 4.0 (API level 14), you must explicitly enable the icon as an action item by calling setHomeButtonEnabled(true) (in previous versions, the icon was enabled as an action item by default).

Fixed: no need to use a setOnMenuItemClickListener. Just pressing the button, it creates and launches the activity through the intent.

Thanks a lot everybody for your help!

I use the actionBarSherlock, after we set supportActionBar.setHomeButtonEnabled(true);
we can override the onMenuItemSelected method:

@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;
}

I hope this work for you ~~~ good luck

if we use the system given action bar following code works fine

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;
}

if anyone else need the solution

@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();


if (id == android.R.id.home) {
onBackPressed();  return true;
}


return super.onOptionsItemSelected(item);
}

Best way to customize Action bar onClickListener is onSupportNavigateUp()

This code will be helpful link for helping code

answers in half part of what is happening. if onOptionsItemSelected not control homeAsUp button when parent activity sets in manifest.xml system goes to parent activity. use like this in activity tag:

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

you should to delete your the Override onOptionsItemSelected and replate your onCreateOptionsMenu with this code

@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;


}