Как я могу реализовать настройку 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
.
По сути, это делается так же, как в этой ссылке, но все равно не входит в слушатель.
return true;
return true;
в концеif
блока, тогда все правильноЯ использую 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; }
Надеюсь, эта работа для вас ~~~ удачи
источник
если мы используем системную панель действий, следующий код работает нормально
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
. Просто нажав кнопку, он создает и запускает действие через намерение.Большое спасибо всем за вашу помощь!
источник
onOptionsItemSelected()
автоматически вызывает . Нет необходимости устанавливать вручную (это может действительно сломать работу).отвечает на половину того, что происходит. если
onOptionsItemSelected
нет,homeAsUp
кнопка управления , когда родительская активность установлена в системе manifest.xml, переходит к родительской активности. используйте это в теге активности:<activity ... > <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.activities.MainActivity" /> </activity>
источник
Вам необходимо явно включить домашнее действие, если вы работаете в ICS. Из документов :
источник
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
иgetSupportActionBar().setHomeButtonEnabled(true);
Лучший способ настроить панель действий onClickListener - это onSupportNavigateUp ()
Этот код будет полезной ссылкой для помощи коду
источник
вам следует удалить свой Override 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; }
источник