2012-07-24 46 views
1

我有一个是在XML定义这样一个可折叠的菜单项:ActionBarSherlock:与方向变化ICS可折叠项崩溃

<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.IllegalArgume ntException:错误的状态类,期望View状态,但接收类android.widget.TextView $ SavedState。这通常发生在不同类型的两个视图在同一层次结构中具有相同ID时。此视图的ID是id/searchMenu。确保其他视图不使用相同的ID。

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

+0

该错误似乎很清楚。你有两个具有相同ID的视图吗? – 2012-08-01 22:11:43

+0

我刚刚找到答案,我猜android对于折叠项目使用相同的ID?上帝知道......感谢您抽出宝贵时间回答我热爱ABS和viewpager,祝您工作顺利:) – vinceseguin 2012-08-02 12:17:00

回答

3

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

我只需要添加一个id到我的EditText,就是这样。

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