为什么我必须有列表视图?

Joh*_*ohn 1 android listview

我正在尝试实施受密码保护的首选项屏幕.我按下菜单按钮然后按设置按钮,而不是显示密码屏幕,FC和我收到此错误:

Uncaught handler: thread main exiting due to uncaught exception
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.john.websafe/com.john.websafe.Preferences}: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
     <snip>
Caused by: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
     at android.app.ListActivity.onContentChanged(ListActivity.java:236)
     at android.preference.PreferenceActivity.onContentChanged(PreferenceActivity.java:160)
     at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:312)
     at android.app.Activity.setContentView(Activity.java:1626)
     at com.john.websafe.Preferences.onCreate(Preferences.java:19)
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123)
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2231)
     ... 11 more
Run Code Online (Sandbox Code Playgroud)

Preferences.java 第19行:

setContentView(R.layout.password);
Run Code Online (Sandbox Code Playgroud)

Password.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">

<TextView android:layout_width="wrap_content"
    android:layout_height="wrap_content" 
    android:text="@string/password" />

<EditText android:id="@+id/password" android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:scrollbars="vertical" />

<Button android:id="@+id/confirm" 
  android:text="@string/confirm"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

导致此错误的原因是什么?为什么我需要一个id为的listview android.R.list?我甚至不一个ListActivity...有没有一个PreferenceActivity包括ListActivity

Zel*_*luX 8

是的,PreferenceActivity是的一个子类ListActivity(),这样你就可以删除的setContentView()方法调用或添加一个子视图与ID android.R.listpassword.xml.