Ваш контент должен иметь ListView, атрибут id которого "android".R.id.список

Я создал 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.список'

хотя у меня android:id="@+id/list" строка в моем xml.

в чем проблема?

7 ответов


переименуйте идентификатор вашего ListView следующим образом,

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

если вы используете ListActivity ваш xml-файл должен указать ключевое слово android при упоминании идентификатора.

Если вам нужен пользовательский ListView тогда вместо расширения ListActivity, вы должны просто расширить Activity и должен иметь тот же идентификатор без ключевого слова android.


У вас должен быть один listview в вашем mainlist.xml файл с id как @android:id/list

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

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

это должно решить вашу проблему.


точный способ я исправил это на основе обратной связи выше, так как я не мог заставить его работать сначала:

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

предпочтения.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>

наследование активность класс вместо ListActivity вы можете решить эту проблему.

public class ExampleActivity extends Activity  {

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.mainlist);
    }
}

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

еще одна вещь, которая повлияла на меня: если у вас есть несколько тестовых устройств, убедитесь, что вы вносите изменения в макет, используемый устройством. В моем случае я провел некоторое время, внося изменения в xmls в каталоге "layout", пока не обнаружил, что мой большой телефон (который я переключил на половину тестирования) использовал xmls в каталоге "layout-sw360dp". Гррр!