gpt4 book ai didi

android - 键盘和可折叠搜索 View 错误 : IllegalArgumentException: parameter must be a descendant of this view

转载 作者:太空狗 更新时间:2023-10-29 13:20:40 25 4
gpt4 key购买 nike

在我的操作栏菜单中,我有一个这样的搜索 View :

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

搜索图标确实出现在操作栏上,当我单击它时,会出现一个文本输入字段,旁边有一个后退按钮,并且键盘会打开。

enter image description here enter image description here

如果我关闭键盘并按下后退按钮,文本字段会消失,但如果我在键盘打开时单击后退按钮,则会出现此错误:

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每当触摸 TextView 以外的东西时关闭键盘并且它工作正常,除了当我点击那个后退按钮时。我该如何解决这个问题?

如果需要更多信息,请告诉我它是什么,我会尽快添加。

谢谢

最佳答案

在 Android 上隐藏键盘的最佳方法是创建一个虚拟 View ,并在您想要关闭键盘时请求将焦点放在它上面。隐藏键盘会让你像这样头疼。当您希望键盘再次出现时,请求将焦点放在编辑文本上……这样您就可以确保键盘的类型正确(由 android:inputType="..."定义)艰难的我用了一段时间

import android.content.Context;
import android.view.View;
import android.view.inputmethod.InputMethodManager;

public class KeyboardUtils {

public static void hideKeyboard(View view) {
InputMethodManager imm = (InputMethodManager) view.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}

public static void showKeyboard(View view) {
InputMethodManager imm = (InputMethodManager) view.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInputFromInputMethod(view.getWindowToken(), 0);
}

}

关于android - 键盘和可折叠搜索 View 错误 : IllegalArgumentException: parameter must be a descendant of this view,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29490649/

25 4 0