tags:

views:

381

answers:

1

When I switch to landscape mode, the following custom view throws an exception in Android 1.5r3 cupcake:

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);
    }
}

The XML for this view is fairly straightforward:

<?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>

Any ideas what might be happening?

+3  A: 

Ah, the problem would have been difficult to diagnose as originally stated.

Turns out that inside my custom view my ProgressBar was named @+id/progress, but when I used the custom view TextProgressBar in my layout I also called the TextProgressBar @+id/progress, resulting in two views with the same id.

Renaming one of them fixed the problem.

Mike
Man yeah... tough to track down.
fiXedd
wow, you saved me from spending hours on this thing, thx!
Maragues