6

当我切换到横向模式时,以下自定义视图在 Android 1.5r3 纸杯蛋糕中引发异常:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.opentable/com.opentable.activity.SearchResults}: 
    java.lang.IllegalArgumentException: Wrong state class -- expecting View State

我的代码:

public class TextProgressBar extends LinearLayout {
    public TextProgressBar(Context context, AttributeSet attrs) {
        super(context, attrs);
        ((LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.text_progress_bar, this, true);
        setGravity(Gravity.CENTER);
    }

    public TextProgressBar(Context context) {
        this(context,null);
    }
}

此视图的 XML 相当简单:

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

    <ProgressBar
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:indeterminate="true"
        android:id="@+id/progress" />

    <TextView
        android:text="Loading..."
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>

任何想法可能会发生什么?

4

2 回答 2

9

啊,如最初所说,这个问题很难诊断。

事实证明,在我的自定义视图中,我的 ProgressBar 被命名@+id/progress,但是当我在布局中使用自定义视图 TextProgressBar 时,我还调用了 TextProgressBar @+id/progress,导致两个视图具有相同的 id。

重命名其中一个解决了这个问题。

于 2009-08-25T02:43:10.157 回答
0

我正在使用带有片段的viewpager。首先,我为 viewpager 测试了每个片段,以检查实际发生错误的位置。最后,我发现我使用的是同名布局的 id。然后我更改了视图的 ID。

于 2019-07-23T13:43:36.720 回答