Ваш контент должен иметь ListView с атрибутом 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: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тогда вместо расширения aListActivity, вы должны просто расширитьActivityи должен иметь тот же идентификатор без ключевого слова android.
вы должны иметь один listview в вашем с идентификатором
@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". Гррр!
Comments