Прослушиватель onClick панели действий для кнопки Home
как я могу реализовать пользовательский onClickListener для кнопки Home панели действий?
Я уже сделал getSupportActionBar().setDisplayHomeAsUpEnabled(true); и теперь я хочу перенаправить пользователя на определенную деятельность в случае нажатия кнопки Home.
Я старался с:
@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.
в основном, это делается так же, как в этой ссылке но все равно это не входит в слушателя.
8 ответов:
Я использую 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; }Я надеюсь, что эта работа для вас ~~~ удачи
если кому-то еще нужно решение
@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. Просто нажав на кнопку, он создает и запускает в действие через намерение.большое спасибо всем за вашу помощь!
вам нужно явно включить действие home, если оно выполняется на ICS. От документы:
Примечание: Если вы используете значок для перехода к домашней деятельности, остерегайтесь этого начиная с Android 4.0 (уровень API 14), вы должны явное включение значка в качестве элемента действия путем вызова setHomeButtonEnabled (true) (в предыдущих версиях значок был включен как действие по умолчанию).
лучший способ настроить панель действий onClickListener-это onSupportNavigateUp ()
этот код будет полезным ссылка для помощи код
ответы в половине происходящего. если
onOptionsItemSelectedНе управленияhomeAsUpкнопка, когда родительская активность устанавливается в манифесте.xml-система переходит к родительской деятельности. используйте это в теге activity:<activity ... > <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.activities.MainActivity" /> </activity>
вы должны удалить переопределение onOptionsItemSelected и реплицировать 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; }
Comments