2011-02-23 3 views
1

암호로 보호 된 환경 설정 화면을 구현하려고합니다.왜 목록보기가 있어야합니까?

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 

Preferences.java 라인 19 :

setContentView(R.layout.password); 

Password.xml :

나는 다음 메뉴 버튼을 설정 버튼을 대신 암호 화면의 게재를 누르면, 그것은 FC의 난이 오류가 나타납니다
<?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> 

이 오류의 원인은 무엇입니까? 왜 id가 android.R.list 인 listview가 필요합니까? 나는 심지어 을 가지고 있지 않다 a ListActivity ... PreferenceActivity에는 ListActivity이 포함되어 있습니까?

+0

도움을 받으려면 정보가 더 필요합니다. 무엇을하려고하는지 설명하십시오. – JoxTraex

+0

@ Jox : 더 좋을까요? – John

답변

8

예, PreferenceActivityListActivity (source)의 서브 클래스입니다, 그래서 당신은 setContentView() 메서드 호출을 제거하거나 password.xml에 ID android.R.list와 하위 뷰를 추가 할 수 있습니다.

1

는 관심있는 사람들을 위해, 나는 암호를위한 활동에 암호와-환경 활동을 분리하여 문제를 해결하고 PreferenceActivity 따라서 PreferenceActivitysetContentView()를 호출하지 않은 확장 활동을 (기본적으로,이 what ZelluX said했다) 것을 의미한다.

관련 문제