次のように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を使用しています。