Activity.findViewById() R.layout 对象上的错误 "expected resource of type id"

Activity.findViewById() error "expected resource of type id" on R.layout object

我正在按照此在线教程构建我的应用程序的一部分,它将 return 我的联系人列表,但我 运行 遇到了一些问题似乎在教程中的任何地方都提到了。

这在 class ContactsFragment 中,它不是项目的主要 activity,而是 return 主要 activity 的片段使用。

这里出现错误...

public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    mContactsList =
        (ListView) getActivity().findViewById(R.layout.contacts_list_view); <--- here
    //...
}

错误显示为 "expected resource of type id",这很奇怪,因为 Android Studio 的智能感知在编写代码时向我建议 contacts_list_view

contacts_list_view.xml 是我从教程中复制的 res/layout 目录中的一个文件。其内容如下:

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

我对 Android Studio 和 Android 总体开发还很陌生,所以我可能遗漏了一些明显的东西。请随时向我指出这一点,或任何其他可能解决我的问题的方法!

谢谢,

马克

你用参数 R.layout.contacts_list_view 调用 findViewById(R.layout.contacts_list_view); 但你需要的是一个视图的 id...你实际上需要的是 R.id.list

更改代码中的这一行:

(ListView) getActivity().findViewById(R.layout.contacts_list_view); 对于 (ListView) getActivity().findViewById(R.id.list);

并且在 .xml 文件中:

android:id="@android:id/list" 对于 android:id="@+id/list"

initialize在里面OnViewCreated像这样

@Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

       ListView mContactsList =(ListView) view.findViewById(R.layout.contacts_list_view);
    }