2013-09-12 5 views
0

У меня есть макет, как показано ниже. Он содержит несколько TextView и ImageView. Ниже я хотел бы добавить ListFragment.Как добавить встроенный ListFragment?

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="Name: " 
     android:id="@+id/textView" 
     android:layout_gravity="left|center_vertical" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:id="@+id/name" 
     android:layout_toRightOf="@+id/textView" 
     android:layout_gravity="left" 
     android:text="Large Text" /> 
... 
    <fragment android:id="@+id/list" 
     android:layout_below="@id/name" 
     class="com.snot.bodyweightworkout.ExerciseListFragment" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 
</RelativeLayout> 

Сейчас я добавляю свой список, используя код ниже. Но я хотел бы добавить его, как показано выше. Я предполагаю, что я добавлю его таким же образом, но какой элемент я должен использовать в своем макете в качестве контейнера?

FragmentManager fm = getSupportFragmentManager(); 
if (fm.findFragmentById(android.R.id.content) == null) { 
    ProgramListFragment list = new ProgramListFragment(); 
    fm.beginTransaction().add(android.R.id.content, list).commit(); 
} 

Любые предложения по его добавлению в линию?

+2

так просто поставить listfragment в вашем XML, а не в коде – tyczj

+0

я запутался о том, как сделать это. И в некоторых случаях я хочу передать параграф в ProgramListFragment. Не могли бы вы просветить меня? – user672009

ответ

1

взгляд на документы http://developer.android.com/guide/components/fragments.html

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:text="Name: " 
    android:id="@+id/textView" 
    android:layout_gravity="left|center_vertical" /> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:id="@+id/name" 
    android:layout_toRightOf="@+id/textView" 
    android:layout_gravity="left" 
    android:text="Large Text" /> 

<fragment android:name="com.example.news.ArticleListFragment" 
     android:id="@+id/list" 
     android:layout_weight="1" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" /> 

</RelativeLayout> 

тогда, когда вы хотите, чтобы получить фрагмент все, что вам нужно сделать, это

FragmentManager fm = getSupportFragmentManager(); 
ProgramListFragment plf = (ProgramListFragment)fm.findFragmentById(r.id.myfragment); 

вы также можете заменить FrameLayout с фрагментом в вашем XML и просто заменить вид в рамке

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:text="Name: " 
    android:id="@+id/textView" 
    android:layout_gravity="left|center_vertical" /> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:id="@+id/name" 
    android:layout_toRightOf="@+id/textView" 
    android:layout_gravity="left" 
    android:text="Large Text" /> 

<FrameLayout 
     android:id="@+id/list" 
     android:layout_weight="1" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" /> 

</RelativeLayout> 

Тогда вы можете использовать чески делать то, что вы делаете уже только вместо добавления вы хотите replace

FragmentManager fm = getSupportFragmentManager(); 
ProgramListFragment list = new ProgramListFragment(); 
fm.beginTransaction().replace(R.id.list, list).commit(); 
Смежные вопросы