#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();