Клавиша «Назад» панели действий не работает - PullRequest
0 голосов
/ 01 мая 2018

Я сделал кнопку возврата панели действий в моем приложении с: Settings.java:

getSupportActionBar().setDisplayHomeAsUpEnabled(true);

и AndroidManifest.xml:

    <activity android:name=".Settings">
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="at.mrminemeet.reviewcheck.MainActivity" />
    </activity>

но я испытал, что программная клавиша вызывает "onPause" и так, но панель действий не будет этого делать.

Я проверил некоторые другие сообщения и поэтому, которые говорят мне, чтобы попробовать

@Override
public void onBackPressed(){
     // stuff
     super.onBackPressed();
}

но это ничего не сделало. Он полностью игнорирует то, что я добавил код.

Я сделал что-то не так?

Другие сообщения: Пост 1 Пост 2

1 Ответ

0 голосов
/ 01 мая 2018

Вам необходимо переопределить onOptionsItemSelected() и использовать идентификатор android.R.id.home, чтобы переопределить действие «вверх». Что бы я сделал, это вызвал бы функцию onBackPressed(), когда нажата кнопка домой. Пример кода будет выглядеть так

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    // Respond to the action bar's Up/Home button
    case android.R.id.home:
        getActivity().onBackPressed()
        return true;
    }
    return super.onOptionsItemSelected(item);
}

Более подробную информацию вы можете найти в документации Android по обеспечению навигации

Обратите внимание, что ответ ниже был написан до редактирования исходного вопроса. Я оставляю это здесь и ответил на вопрос выше.


Оригинальный ответ:

Если вы конкретно говорите о

@Override
public void onBackPressed(){
     super.onBackPressed();
     // stuff
}

тогда проблема в том, что вы звоните super.onBackPressed() перед вашим кодом. Этот вызов вернется к предыдущему действию или выйдет из приложения в зависимости от того, к какому действию оно обращено. Вместо этого измените его на -

@ Override

public void onBackPressed(){
     //your code to do stuff here
     super.onBackPressed();
}

и он сначала выполнит ваш код, а затем вернется.

...