Nội dung của bạn phải có ListView có thuộc tính id là 'android.R.id.list'


156

Tôi đã tạo một tệp xml như thế này:

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

và một hoạt động:

public class ExampleActivity extends ListActivity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {   
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mainlist);
    }
}

Như bạn thấy, tôi chưa làm gì khác. Nhưng tôi đang nhận được lỗi:

Nội dung của bạn phải có ListView có thuộc tính id là 'android.R.id.list'

Mặc dù tôi có android:id="@+id/list"dòng trong xml của tôi.

Vấn đề là gì?

Câu trả lời:


345

Đổi tên id của ListView của bạn như thế này,

<ListView android:id="@android:id/list"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"/>

Vì bạn đang sử dụng ListActivitytệp xml của mình phải chỉ định từ khóa android trong khi đề cập đến ID.

Nếu bạn cần một tùy chỉnh ListViewthì thay vì Mở rộng a ListActivity, bạn chỉ cần mở rộng một Activityvà nên có cùng một id mà không cần từ khóa android .


4
Làm điều này đã khắc phục vấn đề của tôi, cảm ơn. Nhưng tôi tự hỏi liệu bạn có tử tế không khi viết một vài lời giải thích về việc khi nào ListView phải có ID "@android: id / list" và khi nào thì nó có tên tùy ý. Đó là bởi vì tôi không chỉ muốn khắc phục vấn đề của mình mà còn để hiểu tại sao cần khắc phục.
RenniePet

4
Làm. Nhưng tại sao 'trò chơi' này với id tùy thuộc vào chế độ xem?
vừng

1
Khi tôi thêm @android, Eclipse nóilist cannot be resolved or is not a field
user83039

1
cùng một vấn đề, nó hiển thị lỗi: Lỗi: Không tìm thấy tài nguyên nào khớp với tên đã cho (tại 'id' với giá trị '@android: id / list_interestsent').

1
Cảm ơn câu trả lời tuyệt vời này!
Sinh học

23

Bạn nên có một listview trong mainlist.xmltệp của mình với id là@android:id/list

<ListView
    android:id="@android:id/list"
    android:layout_height="wrap_content"
    android:layout_height="fill_parent"/>

15
<ListView android:id="@android:id/list"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"/>

điều này sẽ giải quyết vấn đề của bạn


8

Cách chính xác tôi đã sửa lỗi này dựa trên phản hồi ở trên vì lúc đầu tôi không thể làm cho nó hoạt động được:

Activity_main.xml:

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

MainActivity.java:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
addPreferencesFromResource(R.xml.preferences);

sở thích:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<PreferenceCategory
    android:key="upgradecategory"
    android:title="Upgrade" >
    <Preference
        android:key="download"
        android:title="Get OnCall Pager Pro"
        android:summary="Touch to download the Pro Version!" />
</PreferenceCategory>
</PreferenceScreen>

4

Kế thừa Lớp hoạt động thay vì ListActivity, bạn có thể giải quyết vấn đề này.

public class ExampleActivity extends Activity  {

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.mainlist);
    }
}

1
<ListView android:id="@id/android:list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:drawSelectorOnTop="false"
        android:scrollbars="vertical"/>

0

Một điều khác ảnh hưởng đến tôi: Nếu bạn có nhiều thiết bị thử nghiệm, hãy đảm bảo rằng bạn đang thực hiện thay đổi đối với bố cục được sử dụng bởi thiết bị. Trong trường hợp của tôi, tôi đã dành một lúc để thay đổi xml trong thư mục "layout" cho đến khi tôi phát hiện ra rằng điện thoại lớn hơn của tôi (mà tôi đã chuyển sang thử nghiệm giữa chừng) đang sử dụng xml trong thư mục "layout-sw360dp". Grrr!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.