Подтвердить что ты не робот

Нажатие на значок приложения не вызывает 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" >
4b9b3361

Ответ 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;

надеюсь, что это поможет вам