В вашем контенте должен быть ListView с атрибутом id 'android.R.id.list'
Я создал файл 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.
В чем проблема?
Ответы
Ответ 1
Переименуйте идентификатор вашего ListView таким образом,
<ListView android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
Поскольку вы используете ListActivity
, ваш xml файл должен указывать ключевое слово android, указывая на идентификатор.
Если вам нужен пользовательский ListView
, то вместо расширения ListActivity
вам нужно просто расширить Activity
и иметь тот же идентификатор без ключевого слова android.
Ответ 2
У вас должно быть одно представление в вашем файле mainlist.xml
с идентификатором как @android:id/list
<ListView
android:id="@android:id/list"
android:layout_height="wrap_content"
android:layout_height="fill_parent"/>
Ответ 3
<ListView android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
это должно решить вашу проблему.
Ответ 4
Точный способ я исправил это на основе обратной связи выше, так как я не мог заставить его работать сначала:
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>
Ответ 5
Наследовать Активность Класс вместо ListActivity, вы можете решить эту проблему.
public class ExampleActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mainlist);
}
}
Ответ 6
Еще одна вещь, которая повлияла на меня: если у вас несколько тестовых устройств, убедитесь, что вы вносите изменения в макет, используемый устройством. В моем случае я потратил некоторое время на внесение изменений в xmls в каталоге "layout", пока не обнаружил, что мой более крупный телефон (который я переключил на полпути через тестирование) использовал xmls в каталоге "layout-sw360dp". Grrr!
Ответ 7
<ListView android:id="@id/android:list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:drawSelectorOnTop="false"
android:scrollbars="vertical"/>