Ваш контент должен иметь 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". Гррр!