OnBackPressed воссоздает действие, а не завершает его - PullRequest
0 голосов
/ 07 февраля 2019
   @Override
    public void onBackPressed() {
        if (searchView.isSearchOpen()) {
            searchView.closeSearch();
        } else if (activeFragment != homeFragment) {
            goToHomeFragment();
        } else {
            super.onBackPressed();
            finish();
        }
    }

В приведенном выше коде, когда достигается в блоке else, действие воссоздает себя вместо завершения и завершается.Размещаемое действие имеет 4 фрагмента, но я думаю, что нет ничего общего с фрагментами.Так есть идеи о том, что пошло не так?Какие-либо предложения?Спасибо за внимание.

РЕДАКТИРОВАНИЕ: согласно Manzurul Hoque Rumi, moveTaskToBack (true) действительно сделал свою работу.Вопрос нейтрализован.Я хочу поблагодарить всех, кто ответил на мой вопрос.

Ответы [ 5 ]

0 голосов
/ 07 февраля 2019

Убедитесь, что ваша деятельность не была создана более одного раза, вызовите только finish () и удалите super.onBackPressed ()

0 голосов
/ 07 февраля 2019
 @Override
    public void onBackPressed() {
        if (searchView.isSearchOpen()) {
            searchView.closeSearch();
        } else if (activeFragment != homeFragment) {
            goToHomeFragment();
        } else {

            finish();
        }
    }
0 голосов
/ 07 февраля 2019

Вы можете попытаться добавить в манифест android:noHistory="true" в части своей деятельности, которую хотите закрыть

<activity
        android:name=".DeviceControlActivity"
        android:screenOrientation="landscape"
        android:noHistory="true"
        />
0 голосов
/ 07 февраля 2019

Если вы определили свое корневое действие в качестве поискового, вы должны определить его режим запуска как singleTop в манифесте.

android:launchMode="singleTop"
0 голосов
/ 07 февраля 2019

Удалить finish() и попробовать

@Override
    public void onBackPressed() {
        if (searchView.isSearchOpen()) {
            searchView.closeSearch();
        } else if (activeFragment != homeFragment) {
            goToHomeFragment();
        } else {
            moveTaskToBack(true);
        }
    }
...