如何以编程方式在表行中添加片段?

时间:2014-08-09 12:52:43

标签: android android-fragments

我可以用这个xml来实现这个目的:

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/startoverviewfragmentLayoutId" >

<TableRow
    android:id="@+id/tableRow1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <fragment
        android:id="@+id/fragment1"
        android:name="com.xxxx.xxx.MyMediaPlayer"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</TableRow>

<TableRow
    android:id="@+id/tableRow2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >
</TableRow>

</TableLayout>

但我怎么能用java代码呢?我试过这个:

    MyMediaPlayer mpv = new MyMediaPlayer(); //Fragment
    TableRow tt = (TableRow)myView.findViewById(R.id.tableRow1); 
    tt.addView(mpv);

但是因为片段不是视图所以不会起作用。那我该怎么办?

1 个答案:

答案 0 :(得分:1)

为了向后兼容,请替换

<fragment
    android:id="@+id/fragment1"
    android:name="com.xxxx.xxx.MyMediaPlayer"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

<FrameLayout
    android:id="@+id/fragment1"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

</FrameLayout>
您的活动中的

使用此代码

MyMediaPlayer myf = new MyMediaPlayer();

FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.add(R.id.fragment1, myf);
transaction.commit();