setDisplayHomeAsUpEnabled не работает в одном из моих занятий, но везде работает - PullRequest
0 голосов
/ 17 февраля 2020

По какой-то причине это не работает ни в одном из моих занятий, но везде оно работает нормально, когда я нажимаю кнопку со стрелкой назад на панели инструментов, оно возвращается к моей основной активности.

import androidx.appcompat.widget.Toolbar;

//Initializing toolbar
mToolbar = findViewById(R.id.mToolbar);
setSupportActionBar(mToolbar);

if((getSupportActionBar() != null)){
    getSupportActionBar().setTitle(R.string.equalizerTitle);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_home_up);
}

Манифест

<activity
     android:name=".activities.EqualizerActivity"
     android:parentActivityName=".activities.MainActivity"
     android:screenOrientation="portrait"/>

РЕДАКТИРОВАТЬ

Это действие использует макет ограничения в качестве родителя, но я не понимаю, почему это может быть причиной, все другие действия используйте RelativeLayout, и там они работают нормально.

1 Ответ

0 голосов
/ 17 февраля 2020

Похоже, вы используете onOptionsItemSelected() метод для работы с кнопками меню. Проблема в том, что кнопка «назад» также является своего рода кнопкой меню.

Чтобы Android знал, что у вас нет специального обработчика c для кнопки, и он должен обрабатываться платформой, вам нужно сообщить Android об этом через возврат false когда вы не «потребляете» событие. В соответствии с документами:

onOptionsItemSelected ()

логическое значение Возвращает false, чтобы разрешить нормальную обработку меню, чтобы продолжить, true для использования здесь.

Итак, вы должны иметь что-то вроде этого:

public boolean onOptionsItemSelected(MenuItem item) {
       switch (item.getItemId()) {
               case YOUR_BUTTON:
                   // do something
                   return true;
       }
       // By default, allow Android to work on it
       return false;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...