В чем смысл addToBackStack с нулевым параметром?

У меня есть код клиента. Для всех фрагментов существует только одно действие, то есть одна операция управляет всеми фрагментами.

Это действие содержит следующий код для любого фрагмента на конце метода этого фрагмента –

Например – фрагмент MoreFragment:

MoreFragment firstFragment = new MoreFragment(); getSupportFragmentManager().beginTransaction() .replace(R.id.article_fragment, firstFragment) .addToBackStack(null).commit(); 

Так,

1) В чем смысл addToBackStack(null) за которым следует commit() ?

2) Почему вам нужно передать нулевой параметр в addToBackStack ?

3) Как получить этот фрагмент после его добавления?

Кажется, что этот код бесполезен, поскольку я запускал код без последней строки .addToBackStack(null).commit() и он работал без проблем.

В чем смысл addToBackStack (null), за которым следует commit ()?

Цитирование документов

Вызывая addToBackStack (), транзакция замены сохраняется в фоновом стеке, поэтому пользователь может отменить транзакцию и вернуть предыдущий фрагмент, нажав кнопку «Назад».

Если вы добавите несколько изменений в транзакцию (например, еще один add () или remove ()) и вызовите addToBackStack (), то все изменения, применяемые до вызова commit (), добавляются в задний стек как одна транзакция, а кнопка «Назад» Все это перевернет.

Порядок внесения изменений в FragmentTransaction не имеет значения, за исключением:

Вы должны вызывать commit() last. Если вы добавляете несколько фрагментов в один и тот же контейнер, то порядок их добавления определяет порядок, который они отображаются в иерархии представлений.

Таким образом, вы совершили последнее.

Почему вам нужно передать нулевой параметр в addToBackStack?

Это не должно быть null, это может быть строка. Если вы не хотите просто пройти null

 public abstract FragmentTransaction addToBackStack (String name) Added in API level 11 Add this transaction to the back stack. This means that the transaction will be remembered after it is committed, and will reverse its operation when later popped off the stack. Parameters name An optional name for this back stack state, or null. 

Похоже, этот код бесполезен, поскольку я запускал код без последней строки .addToBackStack (null) .commit (), и он работал без проблем

Если вы хотите перейти к предыдущему фрагменту, добавьте его в стопку. Это зависит от того, хотите ли вы добавить фрагмент в стопку.

Как получить этот фрагмент после его добавления?

У вас уже есть экземпляр фрагмента firstFragment . Поэтому я не знаю, что вы подразумеваете, получив фрагмент позже

Больше информации @

http://developer.android.com/guide/components/fragments.html

http://developer.android.com/reference/android/app/FragmentTransaction.html#addToBackStack(java.lang.String)

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

  public static void replaceFragment (@NonNull FragmentManager fragmentManager, @NonNull Fragment fragment,int frameId){ checkNotNull(fragmentManager); checkNotNull(fragment); FragmentTransaction transaction = fragmentManager.beginTransaction(); transaction.replace(frameId, fragment); transaction.disallowAddToBackStack(); // <-- This makes magic! transaction.commit(); } 

У вас есть симпатичный пример, как использовать его:

 GameFragment fragment = GameFragment.newInstance(mGameObject, currentQuestion); ActivityUtils.replaceFragment(getFragmentManager(), fragment, R.id.main); 
Intereting Posts
Установите Android SDK за серверный прокси? Android ZXing Получить штрих-код Android – Где хранить загруженный контент, внутренний или внешний накопитель? Android записывать на диск ненадежный – файл file.length! = Expected.length OnActivityResult возвращает с данными = null Как определить, когда фрагмент становится видимым в ViewPager Напечатать символ авторского права в TextView Downcasting из Serializable в LinkedList <класс> Как отправить SMS-сообщение в Android Kitkat из приложения, отличного от приложения по умолчанию, без написания SMS-провайдера Нужно ли изменять ключ API при использовании API-интерфейса экземпляра GCM 3.0? Получение класса по его названию Совместное использование текстового файла с помощью ACTION_SEND Как отключить мое приложение sms как приложение по умолчанию в Android Сильное отключение устройства BLE, подключенного к Android-приложению, запускается onConnectionStateChange со статусом 8 Android – Снижение бликов на фотокамере (фото / видео)