我有如下布局。它包含一些TextView和ImageView。下面我想添加一个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>
现在我正在使用下面的代码添加我的ListFragment。但我想如上图所示添加它。我猜我会以同样的方式添加它,但我应该在布局中使用哪个元素作为容器?
FragmentManager fm = getSupportFragmentManager();
if (fm.findFragmentById(android.R.id.content) == null) {
ProgramListFragment list = new ProgramListFragment();
fm.beginTransaction().add(android.R.id.content, list).commit();
}
有关如何将其添加到内联的任何建议吗?
答案 0 :(得分: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);
你也可以在你的xml中用FrameLayout
替换片段,然后替换框架中的视图
<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();