Так что я пытаюсь получить некоторый опыт работы с фрагментами, но я нахожу некоторые контрольно-пропускные пункты.Фрагменты, параметры и ActionBar 'Up' Navigation
Моя текущая ситуация следующая.
У меня есть активность, которая отображает список, содержимое которого определяется параметрами Extra Intent, отправленными из операции «вызов».
Этого список активность использует ListFragment объявленной в XML следующим образом:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" android:background="@color/black">
<fragment class="com.pixlworks.NLC.DirectoryBrowse$ListingFragment"
android:id="@+id/listing"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>
В настоящее время я получаю параметр, который указует тип контента непосредственно в фрагменте путем доступа к Дополнительным данным Намерения активности (или сохраненному Bundle, если таковой имеется):
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if (savedInstanceState != null)
mListingType = savedInstanceState.getString(Utils.DIRECTORY_TYPE_STORE_KEY);
else
mListingType = getActivity().getIntent().getStringExtra(Utils.DIRECTORY_TYPE_STORE_KEY);
// get content by type, create and set the adapter
}
Теперь часть моей проблемы заключается в том, что я не уверен, что это правильный путь «проход» этот параметр от деятельности к фрагменту.
Кроме того, у меня возникают проблемы с этой настройкой при использовании навигации навигации Action Bar. Когда я нажимаю на элемент в этом элементе списка, он переходит к другому действию, показывающему детали выбранного элемента. С этой детальной деятельностью:
Если я использую кнопку «Назад», активность списка возвращается из стека, как обычно, и все работает нормально.
Если я использую UP (несмотря на следующие шаги here), создается новый экземпляр вместо того, чтобы использовать тот, что находится в стеке, и этот новый экземпляр явно не получает параметр Extra в Intent. Поскольку я ожидаю, что значение будет существовать в сохраненном Bundle или в Intent, мое приложение выйдет из строя в этой ситуации.
Так до кипения вещи вниз, я не уверен, какой из них следовать, и как заставить их правильно работать с «UP» навигация:
A) Удержание параметра «Тип» в поле в Activity и сохраните его в пакете Activity onSaveInstanceState. В этом случае я не уверен, как передать значение Фрагменту. В этом случае мне просто нужно убедиться, что UP вызывает существующий экземпляр списка операций
B) Продолжите мою текущую настройку сохранения значения во Фрагменте вместо Activity, но опять же, как обрабатывать Правильная настройка навигации?
Я знаю, что это несколько разных вещей, которые я задаю здесь в то же время, но все они связаны, поэтому я надеюсь, что смогу помочь в этом.
Спасибо за любую помощь заранее!
Благодарим за отзыв. Это вроде как предоставило мне больше вопросов, чем ответов, которые я думаю. 1) Что вы подразумеваете под навигацией UP, поскольку я смотрю на нее больше для «на одном уровне активности»? 2) В ссылке, которую я положил, в разделе «Навигация по родительской активности» говорится, что с использованием этого бита кода в навигации по UP появится какой-либо экземпляр уже запущенного Activity. Но это не похоже на произойдет 3) Код фрагмента, который вы предоставляете, работает, если я создавал экземпляр и добавлял фрагмент программно, но я его объявлял в XML. – RobertoCuba
Создает и добавляет фрагмент программным способом единственный способ сделать это? – RobertoCuba
Еще раз спасибо за Ответ: 1) По-моему, я до сих пор не понимаю, как один из них идет «вверх» в рамках одной и той же деятельности. Я думал, что вся эта работа навигации по навигации должна состоять в том, чтобы перемещаться по логическим деревьям «Родитель-ребенок» (следовательно, вся деятельность «Родитель» настройка в манифесте). В конце концов, то, что вы говорите о вызове finish(), - это именно то, что должен сказать код, о котором я говорил за кулисами, но он этого не делает. Он по-прежнему создает новый экземпляр. – RobertoCuba