2

次のようにXMLで定義された折りたたみ可能なメニュー項目があります。

<item
    android:id="@+id/searchMenu"
    android:icon="@android:drawable/ic_menu_search"
    android:showAsAction="withText|always|collapseActionView"
    android:actionLayout="@layout/collapsible_edittext"/>

次に、collapsible_edittext.xmlファイルを示します。

<?xml version="1.0" encoding="utf-8"?>
<EditText xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:imeOptions="actionSearch"
android:inputType="text"
android:hint="@string/search"/>

アイテムが展開され、電話の向きを変更すると、クラッシュしてlogcatに次のエラーが表示されます。

07-24 08:59:19.353:E / AndroidRuntime(1284):原因:java.lang.IllegalArgumentException:状態クラスが間違っています。ビューステートが必要ですが、代わりにクラスandroid.widget.TextView$SavedStateを受け取りました。これは通常、異なるタイプの2つのビューが同じ階層で同じIDを持っている場合に発生します。このビューのIDはid/searchMenuです。他のビューが同じIDを使用していないことを確認してください。

android:id = "@ + id / searchMenu"を削除すると、すべて正常に機能しますが、コードにアイテムIDが必要です。このエラーはICSでのみ発生し(ジェリービーンズエミュレーターでも機能します)、ActionBarSherlock4.1.0を使用しています。

4

1 に答える 1

4

私はついに問題を発見しました。実際、それはActionBarSherlockとはリンクされていませんでした(プロジェクトからアクションバーシャーロックを削除しましたが、それでもクラッシュしていました)。

EditTextにIDを追加するだけで、それだけです。

<?xml version="1.0" encoding="utf-8"?>
<EditText xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/collapsibleEditText"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:imeOptions="actionSearch"
    android:inputType="text"
    android:hint="@string/search"/>
于 2012-08-02T12:15:21.833 に答える