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.