ActionBarSherlock:方向更改ICS上的可折叠项目崩溃

时间:2012-07-24 13:33:11

标签: android actionbarsherlock

我有一个可折叠的菜单项,用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:错误的状态类,期望View State但是收到了类android.widget.TextView $ SavedState。当两个不同类型的视图在同一层次结构中具有相同的id时,通常会发生这种情况。此视图的ID是id / searchMenu。确保其他视图不使用相同的ID。

如果我删除android:id =“@ + id / searchMenu”,一切正常,但我需要代码中的项ID。此错误仅发生在ICS上(它甚至可以在软件豆模拟器中运行)并且我正在使用ActionBarSherlock 4.1.0

1 个答案:

答案 0 :(得分:3)

我终于找到了问题,事实上它甚至没有与ActionBarSherlock链接(我从我的项目中删除了动作栏sherlock并且它仍在崩溃)。

我只需要在我的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"/>