android - ActionBarSherlock:方向更改 ICS 时可折叠项目崩溃

标签 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。当两个不同类型的 View 在同一层次结构中具有相同的 id 时,通常会发生这种情况。该 View 的 id 是 id/searchMenu。确保其他 View 不使用相同的 id。

如果我删除 android:id="@+id/searchMenu",一切正常,但我的代码中需要项目 id。此错误仅发生在 ICS 上(它甚至可以在果冻 bean 模拟器中工作)并且我使用的是 ActionBarSherlock 4.1.0

最佳答案

我终于找到了问题,事实上它甚至没有与 ActionBarSherlock 链接(我从我的项目中删除了 Action Bar 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"/>

关于android - ActionBarSherlock:方向更改 ICS 时可折叠项目崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11631999/

相关文章:

android - 如何检查用户是否在android上付款?

android - 在 onCreateView 中调用 supportInvalidateOptionsMenu 是否有效? (对于 actionbarsherlock)

android - 来自Maven的ActionBarSherlock Gradle依赖项与androidsupportv4发生冲突

Android Manifest.xml 文件错误 : Android

android - 可以更改 ActionBar 的文本大小/颜色吗?

java - R 无法解析为变量?

java - 更改Android中TextView的字体

android - 应用程序在 java.net.SocketTimeoutException : timeout (Kotlin, Retrofit 上崩溃

android - 值(value)动画师安卓

android - ListView 在 2.x 上改变颜色