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

Posted

技术标签:

【中文标题】ActionBarSherlock:方向更改 ICS 时可折叠项目崩溃【英文标题】:ActionBarSherlock: Collapsible item crash on orientation change ICS 【发布时间】:2012-07-24 13:33:11 【问题描述】:

我有一个在 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_ 
android:layout_ 
android:imeOptions="actionSearch"
android:inputType="text"
android:hint="@string/search"/>

当项目展开时,如果您更改手机的方向,它会崩溃并在 logcat 中显示此错误:

07-24 08:59:19.353: E/AndroidRuntime(1284): Caused by: java.lang.IllegalArgumentException: 错误的状态类,期望查看状态,但收到了类 android.widget.TextView$SavedState。当不同类型的两个视图在同一层次结构中具有相同的 id 时,通常会发生这种情况。这个视图的 id 是 id/searchMenu。确保其他视图不使用相同的 id。

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

【问题讨论】:

错误似乎很明显。您是否有两个具有相同 ID 的视图? 我刚刚找到了答案,我猜android对折叠的项目使用相同的ID?天知道...感谢您抽出宝贵时间回答我喜欢您对 ABS 和 viewpager 所做的工作,好伙伴 :) 【参考方案1】:

我终于找到了问题,实际上它甚至没有与 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_ 
    android:layout_ 
    android:imeOptions="actionSearch"
    android:inputType="text"
    android:hint="@string/search"/>

【讨论】:

以上是关于ActionBarSherlock:方向更改 ICS 时可折叠项目崩溃的主要内容,如果未能解决你的问题,请参考以下文章

ActionBarSherlock - 带有分隔线的操作栏自定义背景

微电子专业想投身数字IC设计方向,在硕士阶段应该怎么学习?

微电子专业想投身数字IC设计方向,在硕士阶段应该怎么学习?

STIL文件(DFT/IC测试方向)

2022届校招,集成电路(IC/FPGA)方向的你们目前进展如何?

PCB设计规则