2012-03-13 4 views
2

У меня есть FragmentActivity, где я динамически добавляю Fragment s в свои onCreate. Я хочу Fragment выше ListFragment. Конечно, первое, что я пробовал, это фрагменты в одном LinearLayout в одном ScrollView, но тогда ListFragment будет показывать только по одной строке за раз.Как встраивать просмотр фрагмента в заголовок ListFragment

Я нашел Scrolling 2 fragment (one Fragment and one ListFragment) as one, но я не знаю, как получить родительский вид Fragment, чтобы добавить в заголовок вид ListFragment. Я, очевидно, получаю NPE, когда звоню fragment.getView() и fragment.getView().getParent(), потому что я все еще в onCreate своей деятельности, поэтому представления еще не инициализированы.

Как я могу положить Fragment выше ListFragment?

ответ

2

Создание макета, который содержит первый фрагмент, например, так:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" > 

     <fragment 
      android:id="@+id/content" 
      android:name="your.fragment.YourFragment" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" /> 

    </FrameLayout> 

И затем, в вашем ListFragment, добавьте этот макет в качестве заголовка, например, так:

View header = inflater.inflate(R.layout.widget_user_fragment, null, false); 
getListView().addHeaderView(header, null, true); 
+0

Спасибо! Я поставил это прямо перед 'setListAdapter' в моем ListFragment. Я использовал 'LayoutInflater.from (getActivity())' для получения надувателя. Мне также пришлось «добавить» фрагмент в макет вместо его уже там, чтобы получить представление, созданное с помощью некоторых аргументов. – jmgrosen

+1

Если вам нужен LayoutInflater, вы можете вызвать 'getActivity(). GetLayoutInflater()';) – BoD

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