2015-06-21 5 views
-2

У меня есть MainActivity, которая начинает фрагменты, в соответствии с определенной нажатой кнопкой. Когда я нахожусь под фрагментом, и я нажимаю кнопку «Назад», приложение будет закрыто. Моя идея: при нажатии кнопки «Назад» я покажу MainActivity со всей кнопкой. Я пишу эти строки кода в MainActivity:Как переключиться обратно в MainActivity из фрагмента?

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if ((keyCode == KeyEvent.KEYCODE_BACK)) { 
     recreate(); 
    } 
    return super.onKeyDown(keyCode, event); 
} 

Это хорошее решение? Он работает достаточно хорошо, единственное, что происходит между транзакцией макета фрагмента и макетом действий, есть черный экран менее половины секунды. есть ли способ исправить это?

+0

вы можете поделиться код воссоздавать()? Кроме того, вы можете использовать диспетчер фрагментов для замены фрагментов – droidx

+0

The recreate(); метод доступен Android, это не мое. Могу ли я также перейти от фрагмента к другому фрагменту напрямую? –

+0

Ahh..I только что прочитал о методе recreate..It заставляет эту активность воссоздавать с новым экземпляром. поэтому, это не рекомендуется, да, вы можете общаться с другими фрагментами с помощью интерфейсов. Проверьте эту документацию. http://developer.android.com/training/basics/fragments/communicating.html – droidx

ответ

2

Когда вы добавляете фрагмент, добавьте его в backStack. Обратная печать автоматически вернет фрагмент и покажет ваше основное действие.

Например:

FragmentManager fragmentManager = getFragmentManager(); 
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
fragmentTransaction.replace(..............); 
fragmentTransaction.addToBackStack(null); 
fragmentTransaction.commit(); 
+0

Почему вы поместили null? Что это значит ? –

+0

Его просто тег. Чтобы запомнить, какой фрагмент текущего объекта размещен, вы можете использовать этот тег. Его не обязательно, если вы не хотите тег или не хотите помнить, что является текущим фрагментом, вы можете использовать null. В сложных системах один фрагмент-держатель будет использоваться для отображения многих фрагментов. Поэтому в таких случаях трудно найти, какой фрагмент находится в данный момент, и знать, что мы используем эти теги. –

+0

Bu использует метод addToBackStack (null), кроме сохранения активности, выполняющей/выполняющей фрагмент? –

Смежные вопросы