0

私は他のすべての同じ/類似の質問を閲覧しました:

Android:コンテンツには、id属性がandroid.R.id.listであるListViewが必要です。

コンテンツには、id属性が「android.R.id.list」であるListViewが必要です。

どれも役に立たなかった。

違いは、私のアクティビティがListActivitiyを拡張しないことです(これは上記の場合に問題であるように見えました)。

私のアクティビティはFragmentActivityを拡張します(依存関係があるため、これをActivityに変更することはできません)。

public class MainActivity extends FragmentActivity 

... リストビュー

<ListView
    android:id="@+id/list"
    android:layout_width="fill_parent"
    android:layout_height="50dp"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:divider="#b5b5b5"
    android:dividerHeight="1dp"
    android:listSelector="@drawable/list_selector" >
</ListView>

...フラグメントビュー。

<fragment
    android:id="@+id/contentFragment"
    android:name="com.landa.fragment.ContentFragment"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/include1" />

また、上記の質問で提案されているように、ListViewの「id」形式を変更してみました-Androidはその表記に同意しません。

コンテンツフラグメントはListFragmentを拡張します:

public class ContentFragment extends ListFragment {

どうすればこれを修正できますか?

4

1 に答える 1

5

最初の問題:

android:id="@+id/list"

する必要がありました

android:id="@android:id/list"

次に、にアクセスするListView場合、アクティビティで作業していて、フラグメントへの参照がある場合は、この方法でアクセスできます。

ListView l = fragment.getListView();

また

ListView l = (ListView) fragment.getView().findViewById (android.R.id.list);

フラグメント内にいる場合は、呼び出しでgetListView()十分です。

また、ロジックメソッドを呼び出すためにFragment -> Activity常にキャストするか、これを処理するインターフェイスを作成することで、コミュニケーションgetActivity()をとることができることを忘れないでください。YourActivity

于 2013-02-08T03:41:25.300 に答える