【发布时间】:2015-04-07 11:36:37
【问题描述】:
在我的操作栏菜单中,我有一个这样的搜索视图:
<item android:id="@+id/action_search"
android:title="@string/action_search"
android:icon="@drawable/ic_search_black_36dp"
app:showAsAction="ifRoom|collapseActionView"
app:actionViewClass="android.support.v7.widget.SearchView" />
搜索图标确实出现在操作栏上,当我点击它时,会出现一个文本输入字段,旁边有一个后退按钮,并且键盘打开。
如果我关闭键盘并按下后退按钮,文本字段会消失,但如果我在键盘打开时单击后退按钮,则会出现此错误:
04-07 15:57:08.411 14736-14736/cheetar.xorjin E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.IllegalArgumentException: parameter must be a descendant of this view
at android.view.ViewGroup.offsetRectBetweenParentAndChild(ViewGroup.java:4257)
at android.view.ViewGroup.offsetDescendantRectToMyCoords(ViewGroup.java:4194)
at android.view.ViewRootImpl.scrollToRectOrFocus(ViewRootImpl.java:2122)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:1842)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1634)
at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4448)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)
我使用this answer 来关闭键盘,只要触摸文本视图以外的东西,它就可以正常工作,除非我点击后退按钮。我该如何解决这个问题?
如果需要更多信息,请告诉我它是什么,我会尽快添加。
谢谢
【问题讨论】:
-
我们需要更多代码来重现此错误。你的意思是“如果我关闭键盘并按下后退按钮,文本字段就会消失”,你如何关闭键盘?我已经在其他应用程序上进行了测试,当 TextField 存在时 1 后退按钮单击关闭键盘,2 后退单击隐藏 TextField。您是否在单击 2 次时收到此异常?
-
我的活动中还没有与这部分相关的任何代码(尚未实现搜索)。奇怪的是,它在不同的版本中随机发生。有时即使我不改变任何事情,它也会发生或得到修复。现在我自己无法重现错误并且很困惑。当我按下工具栏上的后退按钮时也发生了错误。如果我按了我的设备后退按钮 2 次,它会正常工作,因为它会先关闭键盘。
-
啊,好吧,你的意思是,不是设备后退按钮,而是工具栏“
-
输入你的后退按钮代码