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