Нажатие на значок приложения не вызывает onOptionsItemSelected()
В настоящее время я работаю над Android-приложением. Я хотел бы использовать значок приложения в панели действий, чтобы перейти к "домашнему" действию. Я прочитал на эту страницу, что все, что нужно сделать, это добавить onOptionsItemSelected
и найти id android.R.id.home
.
Это код, который я реализовал в своей деятельности, где я хочу нажать значок приложения, чтобы вернуться к HomeActivity
.
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case android.R.id.home:
Intent intent = new Intent(this, HomeActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
Однако ничего не происходит. При отладке я вижу, что щелчок по значку вообще не вызывает onOptionsItemSelected()
. Должен ли я что-то делать с иконкой где-нибудь? На данный момент все по умолчанию, только это в AndroidManifest.xml
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
Ответы
Ответ 1
Для пакетов, нацеленных на уровень API, начиная с 14-го уровня, вам нужно включить домашнюю кнопку, вызвав setHomeButtonEnabled()
В вашем onCreate добавьте следующее:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
getActionBar().setHomeButtonEnabled(true);
}
Ответ 2
Если вы используете новую панель поддержки Android (AppCompat), вам необходимо выполнить оба вызова.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
getActionBar().setHomeButtonEnabled(true);
}
getSupportActionBar().setHomeButtonEnabled(true);
Ответ 3
Я не знаю, есть ли у нас одна и та же проблема.
но, я был на этой проблеме и теперь решил..
Вы добавляете
case android.R.id.home:
Intent intent = new Intent(this, HomeActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
return true;
в HomeActivity?
это неверно.
вы должны поместить этот код в свою вторую активность.
потому что ваша домашняя кнопка на secondActivity, а не HomeActivity
case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);
true;
надеюсь, что это поможет вам