Как мне выйти из фрагмента и вернуться к своей активности в ящике с помощью кнопки «Назад»?

#android #android-activity #navigation-drawer

#Android #android-активность #навигация-ящик

Вопрос:

Я пытаюсь создать приложение, которое имеет в DrawerActivity качестве основного действия. Я реализовал в нем 8 фрагментов, которые соответствуют каждому элементу в ящике. Теперь проблема, с которой я сталкиваюсь, заключается в том, что всякий раз, когда я пытаюсь нажать кнопку «Назад», чтобы вернуться к DrawerActivity фрагменту «Из фрагмента», вместо этого я выхожу из приложения. Я искал на форумах уже три дня и не нашел никакого решения для этого. Совершенно расстроенный, я тупо удалил свой код, поэтому я не могу показать его прямо сейчас. Может кто-нибудь просто объяснить мне, как я должен выйти из фрагмента с помощью кнопки «Назад» и вернуться к своей основной деятельности?

Текущий сценарий: DrawerActivity содержит восемь фрагментов, все независимые друг от друга. Давайте назовем их фрагментами от A до H. Когда я перехожу к фрагменту A, я должен иметь возможность открывать navigationDrawer и переходить к любым другим фрагментам от B до H. Однако, нажав кнопку «Назад», я также смогу вернуться на главную страницу активности в ящике.

Вещи, которые я пробовал, которые не сработали, — это
1. Использование onBackPressed и popBackStack.
2. Создание пользовательского прослушивателя.
3. Использование FragmentTransaction.

Комментарии:

1. to go back to the drawer activity's main page Вы имеете в виду возврат к первому фрагменту или к действию?

2. Я имею в виду вернуться к действию, потому что фрагмент является частью действия, верно? Например, если на странице действия отображается «ПРИВЕТ», затем я перехожу к фрагменту и нажимаю «Назад», я должен снова увидеть «ПРИВЕТ».

3. @CannonBaller9Pin Вы определили текстовое представление «ПРИВЕТ» (или любое другое представление, которое вы используете для отображения текста) в XML-файле?

4. @M.S. Я просто использовал «ПРИВЕТ» в качестве примера. Предположим, что моя основная активность пуста. Он содержит три фрагмента, запущенных из трех вариантов в ящике. Предположим, я нажимаю на первый вариант. Теперь я нажимаю кнопку «Назад». Вместо того, чтобы выходить из приложения напрямую, я хочу вернуться на первую страницу, отображаемую приложением, то есть на пустую главную страницу активности.

5. @CannonBaller9Pin Может быть, вы хотите отсоединить фрагмент или удалить его?

Ответ №1:

Я не могу поверить, насколько я глуп. Я использовал свое приложение Gmail на своем телефоне, когда внезапно понял, что первый фрагмент в активности ящика всегда является фрагментом по умолчанию, и приложение всегда должно возвращаться к нему при нажатии кнопки «Назад». Я думал, что активность ящика вернется в исходное состояние при нажатии кнопки «Назад», но я не учел тот факт, что фрагменты являются частью самой активности. Спасибо всем за попытку понять мою проблему, которая на самом деле не была проблемой вообще… Кажется, я чему-то научился вопреки себе.

Ответ №2:

Вы пробовали переопределять onBackPressed() без вызова метода суперкласса? (Чтобы предотвратить вызов функции finish().)

 @Override
public void onBackPressed() {
    //show Fragment A
}
  

Вызовите его без «super.onBackPressed ()», и он должен работать.

Комментарии:

1. Я не хочу возвращаться к другому фрагменту из моего текущего фрагмента. Я хочу вернуться к действию, которое запустило фрагмент.

Ответ №3:

Вы должны добавить свой фрагмент в задний стек Android следующим образом:

  getSupportFragmentManager()
            .beginTransaction()
            .replace(R.id.your_container,fragment,fragment.TAG)
            .addToBackStack(null)
            .commit();