2016-03-02 2 views
0

Фрагменты - это то, что я все еще пытаюсь понять, я получаю некоторые из них, но не все.Android-фрагменты и создание новых экземпляров. Вам всегда нужен контейнер?

Мой вопрос: нужен ли мне контейнер для запуска экземпляра нового фрагмента? Это то, что я сейчас делаю, чтобы запустить фрагмент из моей текущей деятельности, что у меня есть контейнер в.

FragmentManager fm = getActivity().getFragmentManager(); 
    FragmentTransaction ft = fm.beginTransaction(); 
    ft.replace(container.getId(), new OtherFragment()); 
    ft.commit(); 

Так что моя основная деятельность имеет контейнер, где я могу перейти от 4-х фрагментов. Теперь скажем, что я нажимаю на один из элементов списка на третьей вкладке. Это запускает новую активность, которая показывает другой список. Затем, если я нажму на элемент в этом списке, я запустил новое действие. Затем, если бы он сказал «нажмите для получения дополнительной информации», я буду запускать новую деятельность (я еще не создал это, и именно поэтому я спрашиваю об этом).

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

Или я использую только фрагменты, когда они будут похожи и у них будет контейнер, который нужно положить?

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

Спасибо.

enter image description hereenter image description hereenter image description here

ответ

0

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

FragmentManager fm = getActivity().getFragmentManager(); 
if (mDetailFragment == null) 
{ 
    mDetailFragment = new DetailFragment(); 
} 
FragmentTransaction ft = fm.beginTransaction(); 
ft.replace(container.getId(), mDetailFragment); 
ft.commit(); 

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

ft.addToBackstack("OtherFragment"); 
ft.setCustomAnimations(R.anim.enter, R.anim.exit, R.anim.popEnter, R.anim.popExit); 
+0

Эй, спасибо за ответ. Как вы скажете, что запуск или создание слишком большого количества действий может повлиять на производительность приложения? Я довольно новичок в андроиде, поэтому я хочу убедиться, что я узнаю правильные пути. Поэтому, как и для этого проекта, я чувствую, что могу создавать фрагменты для некоторых других моих классов, поскольку все, что я делаю, это отображение информации или текста. @CaseyB – huey77

+0

Android действительно хорош в том, что он убивает вещи, которые больше не используются, поэтому это не должно быть слишком большой проблемой, но если вы можете сохранить это, вы можете также. – CaseyB

+0

Я немного смущен вашим ответом. Если я правильно понимаю, вы помещаете mDetailFragment в контейнер. Но если я помещу его в контейнер в качестве первой вкладки отключения, со списком. Тогда таба будет оставаться на вершине. Способ, которым я настроил свой основной, - это то, что у меня есть панель вкладок, закрытая сверху, и я изменяю только то, что под ней, независимо от 4 фрагментов, которые мне нужны. Так что это не работает, верно? – huey77