0

フラグメントを使用して埋めたいリストビューを含むレイアウト ファイルがあります。しかし、それは私にエラーを与え続けます。レイアウト ファイル:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<ListView
    android:id="@+id/list"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true" >
</ListView>

<TableLayout
    android:id="@+id/details"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:stretchColumns="1" >

    <Button
        android:id="@+id/create_patient_button"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/create_patient_button" />
</TableLayout>

</RelativeLayout>

私のfragmentActivity:

public class BasicFragmentActivity extends FragmentActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);


    setContentView(R.layout.create_patient_view);

    FragmentManager fm       = getSupportFragmentManager();
    Fragment        fragment = fm.findFragmentById(R.id.list);

    if (fragment == null) {


        FragmentTransaction ft = fm.beginTransaction();
        ft.add(R.id.list, new BasicFragment());
        ft.commit(); // Make sure you call commit or your Fragment will not be added. 
                     // This is very common mistake when working with Fragments!
    }
}

}

マイリストフラグメント:

public class BasicFragment extends ListFragment {

private PatientAdapter pAdapter;

@Override
public void onActivityCreated(Bundle savedState) {
    super.onActivityCreated(savedState);

    pAdapter = new PatientAdapter(getActivity(), GFRApplication.dPatients);
    setListAdapter(pAdapter);
}
}

エラー: java.lang.UnsupportedOperationException: addView(View) は AdapterView でサポートされていません

4

1 に答える 1

0

findFragmentById(...)この関数は、フラグメントの ID (!) をパラメーターとして受け取ります。しかし、あなたは ListView ( ) のものでそれをR.id.list呼び出しIDます<ListView android:id="@+id/list" ...ListViewフラグメントではないため、間違っています。最初の問題です。

2番目の問題は次のとおりです。

  FragmentTransaction ft = fm.beginTransaction();
       ft.add(R.id.list, new BasicFragment());

関数の最初のパラメーターは、ft.add()フラグメントを配置するコンテナーの ID です。しかし、あなたR.id.listはあなたの id を使用しますListView。ListView はフラグメントを直接配置できるコンテナではないため、間違っています。

ListViewフラグメントをアイテムに入れたい場合は、次のことができます。

  1. ListViewカスタム ビューで埋めます。
  2. <fragment ...>カスタム ビュー レイアウト (XML) に宣言します。または、カスタム ビュー レイアウト (FrameLayout など) でフラグメント コンテナーを作成し、実行時に (getView() メソッドで) フラグメントを配置します。
于 2012-10-04T10:54:53.477 に答える