У вашому вмісті має бути ListView, атрибут id якого "android.R.id.list"


156

Я створив такий файл 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="@+id/list" >
</ListView>

та діяльність:

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);
    }
}

Як бачите, я більше нічого не робив. Але я отримую помилку:

У вашому вмісті має бути ListView, атрибут id якого "android.R.id.list"

Незважаючи на те, що я маю android:id="@+id/list"рядок у своєму xml.

В чому проблема?

Відповіді:


345

Перейменуйте ідентифікатор вашого ListView таким чином,

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

Оскільки ви використовуєте ListActivityсвій XML-файл, ви повинні вказати ключове слово android , згадуючи ідентифікатор.

Якщо вам потрібен звичай, ListViewто замість розширення a ListActivity, ви повинні просто розширити Activityі повинен мати той самий ідентифікатор без ключового слова android .


4
Завдяки цьому виправили мою проблему, дякую. Але мені цікаво, чи не хочете ви написати кілька слів для пояснення того, коли у ListView повинен бути ідентифікатор "@android: id / list", і коли це нормально, щоб він мав довільну назву. Це тому, що мені подобається не тільки виправити свою проблему, але і зрозуміти, для чого потрібно виправити.
RenniePet

4
Працює. Але чому це "ігри" з id залежно від перегляду impl?
ses

1
Коли я додаю @android, Eclipse кажеlist cannot be resolved or is not a field
user83039

1
така ж проблема відображає помилку: Помилка: Не знайдено ресурсу, який би відповідав заданому імені (у "id" зі значенням "@android: id / list_interestsent").

1
Дякую за цю чудову відповідь!
Бревологія

23

У вас повинен бути один перегляд списку у вашому mainlist.xmlфайлі з id as@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"/>

це повинно вирішити вашу проблему


8

Точний спосіб я це виправив, грунтуючись на відгуках вище, оскільки я не міг змусити його працювати спочатку:

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);

preferences.xml:

<?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

Спадкування активність клас замість ListActivity ви можете вирішити цю проблему.

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

Ще одне, що вплинуло на мене: Якщо у вас є кілька тестових пристроїв, переконайтеся, що ви вносите зміни в макет, який використовується пристроєм. У моєму випадку я витратив деякий час, вносячи зміни до xmls у каталозі "макет", поки не виявив, що мій більший телефон (який я перейшов на півдороги через тестування) використовував xmls у каталозі "layout-sw360dp". Grrr!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.