自更新到支持库23以来,collapseActionView中出现IllegalStateException

时间:2015-09-24 06:32:17

标签: android android-support-library android-6.0-marshmallow android-appbarlayout

我的AppBarLayout布局为ToolbarViewPager布局为3个标签。 每个标签都使用Toolbar通过ActionMode的{​​{1}}支持搜索模式。 当我们更新我们的应用以使用新的SearchView(定位API 23,并使用构建工具23.0.1)时,退出搜索模式会崩溃以下堆栈中的应用:

Support library 23.0.1

回到FATAL EXCEPTION: main Process: com.package.name, PID: 3021 java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first. at android.view.ViewGroup.addViewInner(ViewGroup.java:3937) at android.view.ViewGroup.addView(ViewGroup.java:3787) at android.view.ViewGroup.addView(ViewGroup.java:3728) at android.view.ViewGroup.addView(ViewGroup.java:3701) at android.support.v7.widget.Toolbar.addChildrenForExpandedActionView(Toolbar.java:1809) at android.support.v7.widget.Toolbar$ExpandedActionViewMenuPresenter.collapseItemActionView(Toolbar.java:2048) at android.support.v7.internal.view.menu.MenuBuilder.collapseItemActionView(MenuBuilder.java:1345) at android.support.v7.internal.view.menu.MenuItemImpl.collapseActionView(MenuItemImpl.java:705) at android.support.v7.widget.Toolbar.collapseActionView(Toolbar.java:570) at android.support.v7.widget.Toolbar$3.onClick(Toolbar.java:1065) at android.view.View.performClick(View.java:4781) at android.view.View$PerformClick.run(View.java:19873) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5289) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699) 一切正常。 我看到我的Support library 22.0.1回调被调用,并返回true,但它似乎在我的代码之外崩溃。

1 个答案:

答案 0 :(得分:1)

问题是由于我们手动添加和删除工具栏中的主页视图而导致的 - 看起来像在支持库23中,此特殊按钮位于隐藏视图折叠搜索视图时的集合,我们对视图的更改与此逻辑发生冲突。

解决方案是切换主页按钮的可见性,这解决了崩溃问题