Нажатие на значок приложения не вызывает onOptionsItemSelected () - PullRequest
25 голосов
/ 21 января 2012

Я сейчас работаю над приложением для Android. Я хотел бы использовать значок приложения на панели действий, чтобы перейти к «домашнему» занятию. Я прочитал на этой странице, что все, что нужно сделать, это добавить onOptionsItemSelected и найти идентификатор 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" >

Ответы [ 3 ]

39 голосов
/ 21 января 2012

Для пакетов, предназначенных для API уровня 14 и выше, вам необходимо активировать кнопку home, вызвав setHomeButtonEnabled()

В вашем onCreate добавьте следующее:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
    getActionBar().setHomeButtonEnabled(true);
}
4 голосов
/ 11 ноября 2013

Если вы используете новую панель поддержки-действия Android ( AppCompat ), вам нужно сделать оба вызова.

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
    getActionBar().setHomeButtonEnabled(true);
}
getSupportActionBar().setHomeButtonEnabled(true);
0 голосов
/ 07 января 2017

Я не знаю, есть ли у нас такая же проблема.

, но я был на этой проблеме и теперь решил ..

Вы добавляете

case android.R.id.home:
    Intent intent = new Intent(this, HomeActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(intent);
    return true;

вГлавнаяДеятельность?это неверно ..

вы должны поместить этот код в свой SecondActivity .. потому что ваша кнопка домой на secondActivity, а не HomeActivity

case android.R.id.home:
     NavUtils.navigateUpFromSameTask(this);
     true;

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

...