【问题标题】:StackOverflowError with PreferenceActivityStackOverflowError 与 PreferenceActivity
【发布时间】:2012-05-10 16:00:54
【问题描述】:

我创建了一个类似于 Android ApiDemos 中的 PreferenceActivity。

我正在使用此代码来创建活动:

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 中编译运行完美。

亲切的问候, 斯蒂芬。

【问题讨论】:

    标签: android preferenceactivity stack-overflow


    【解决方案1】:

    好的,显然这与我如何保存调用活动的状态有关,而不是实际的偏好活动。我正在保存一个序列化的对象,它在例如方向改变时可以正常工作,但在我调用新活动时却不是出于某种原因。

    我在将我的偏好完全重写为一个普通的 Activity 后发现了这一点,但它仍然不断抛出同样的错误。

    哦,好吧。 叹息

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-21
      • 2018-11-29
      • 1970-01-01
      • 2015-04-08
      • 2017-03-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多