2012-05-10 2 views
0

Android ApiDemos와 비슷한 PreferenceActivity를 만들었습니다.PreferenceActivity가 포함 된 StackOverflowError

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    addPreferencesFromResource(R.xml.bridges_references); 
    //setPreferenceScreen(createPreferenceHierarchy()); 
} 

이 XML :

나는 활동을 만들려면이 코드를 사용하고

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen 
    xmlns:android="http://schemas.android.com/apk/res/android"> 

<PreferenceCategory 
     android:title="Preferences"> 

    <CheckBoxPreference 
      android:key="hasLoops" 
      android:defaultValue="true" 
      android:title="@string/title_hasLoops" 
      android:summary="@string/summary_hasLoops" /> 

    <ListPreference 
     android:key="width" 
     android:defaultValue="7" 
     android:summary="@string/summary_width" 
     android:dialogTitle="@string/title_width" 
     android:title="@string/title_width" 
     android:entryValues="@array/size_values"/> 

    <ListPreference 
     android:key="height" 
     android:defaultValue="7" 
     android:summary="@string/summary_height" 
     android:dialogTitle="@string/title_height" 
     android:title="@string/title_height" 
     android:entryValues="@array/size_values"/> 

</PreferenceCategory> 

</PreferenceScreen> 

내가 사용 환경 설정 작업을 시작하려고 :

Intent intent = new Intent(activity.getApplicationContext(), BridgesPreferenceActivity.class); 
activity.startActivity(intent); 

StackOverflowError가 발생합니다.

java.lang.StackOverflowError 
at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1746) 
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1696) 
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1660) 
at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:1153) 
at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:420) 
at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1251) 
at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1587) 
at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1854) 
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1696) 
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1660) 
at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:1153) 

(너무 길어서 실제로 어떤 원인인지는 알 수 없습니다. 자른다)

이것은 ListPreference 또는 EditTextPreference를 포함 할 때마다 발생합니다. CheckBoxPreference는 정상적으로 작동합니다.

때로는 배열의 크기를 줄이면 작동하지만, 기본 설정을 다시 열면 StackOverflowError가 다시 나타납니다.

내가 뭘 잘못하고 있을지 모르겠다. 비슷한 코드가 ApiDemos에서 완벽하게 컴파일되고 실행됩니다.

친절함에 관해서는 Stephan.

답변

-1

이것은 분명히 실제 활동 환경이 아니라 활동 활동 상태를 저장하는 것과 관련이 있습니다. 예를 들어 오리엔테이션이 바뀔 때 잘 작동하는 직렬화 된 객체를 저장하고 있었지만 새로운 작업을 호출 할 때는 어떤 이유로 든 작동하지 않았습니다.

내 취향을 일반 활동으로 완전히 다시 작성한 후에도 동일한 오류가 발생하는 것으로 나타났습니다.

오 잘. 한숨

관련 문제