Android - "您的内容必须有一个ListView,其id属性为android.R.id.list"

Too*_*ool 0 android listactivity android-activity

我浏览了其他每个相同/类似的问题:

Android:您的内容必须具有ListView,其id属性为android.R.id.list

您的内容必须具有ListView,其id属性为'android.R.id.list'

没有任何帮助.

区别在于我的Activity没有扩展ListActivitiy(这似乎是上述情况中的问题).

我的活动扩展了FragmentActivity(我无法将其更改为Activity,因为我有依赖项).

public class MainActivity extends FragmentActivity 
Run Code Online (Sandbox Code Playgroud)

... 列表显示

<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>
Run Code Online (Sandbox Code Playgroud)

...片段视图

<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" />
Run Code Online (Sandbox Code Playgroud)

我也尝试按照上述问题的建议更改ListView的'id'格式 - Android不同意这种表示法.

内容片段扩展了ListFragment:

public class ContentFragment extends ListFragment {
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?

A--*_*--C 5

第一个问题:

android:id="@+id/list"
Run Code Online (Sandbox Code Playgroud)

需要

android:id="@android:id/list"
Run Code Online (Sandbox Code Playgroud)

然后,当您想要访问时ListView,如果您正在使用Activity并且您有对Fragment的引用,则可以通过这种方式执行此操作:

ListView l = fragment.getListView();
Run Code Online (Sandbox Code Playgroud)

要么

ListView l = (ListView) fragment.getView().findViewById (android.R.id.list);
Run Code Online (Sandbox Code Playgroud)

如果你在片段中,调用getListView()就足够了.

另外,请不要忘记,您可以Fragment -> Activity通过始终getActivity()转换YourActivity来调用逻辑方法或创建一个接口来处理这种情况.