Android Lollipop 上的键盘隐藏崩溃

Posted

技术标签:

【中文标题】Android Lollipop 上的键盘隐藏崩溃【英文标题】:Keyboard Hidden crashes on android Lollipop 【发布时间】:2016-10-19 04:21:28 【问题描述】:

有人解决android 5.0 上键盘隐藏崩溃的问题吗?我用相同的代码在 4.4.2 上试过,但没有发生。

这是我的活动设置:

<activity
        android:name=".activity.MainActivity"
        android:configChanges="orientation|screenSize"
        android:hardwareAccelerated="true"
        android:label="@string/app_name"
        android:screenOrientation="portrait"
        android:theme="@style/AppTheme.NoActionBar">

这是冻结后的日志

 06-17 20:43:57.823 32593-32604/org.mydev.app.debug W/art:暂停所有线程耗时:14.210ms
06-17 20:43:59.503 32593-32604/org.mydev.app.debug W/art:暂停所有线程耗时:195.356ms
06-17 20:44:02.633 32593-931/org.mydev.app.debug E/UncaughtException: java.lang.NullPointerException: 尝试从空对象上的“java.lang.Object maps.Wd$cc”字段读取参考
                                                                                  在 maps.W.d.a(未知来源)
                                                                                  在 maps.W.d.b(未知来源)
                                                                                  在 maps.X.J.a(未知来源)
                                                                                  在 maps.ac.i$d.a(未知来源)
                                                                                  在 maps.ac.i.a(未知来源)
                                                                                  在 maps.ac.n.a(未知来源)
                                                                                  在 maps.X.A.a(未知来源)
                                                                                  在 maps.X.H.a(未知来源)
                                                                                  在 maps.X.H.b(未知来源)
                                                                                  在 maps.X.y$f.f(未知来源)
                                                                                  在 maps.X.y$f.run(未知来源)
06-17 20:44:02.673 32593-32593/org.mydev.app.debug I/Choreographer:跳过 557 帧!应用程序可能在其主线程上做了太多工作。

【问题讨论】:

尝试在activity标签中添加android:windowSoftInputMode="stateHidden" 非常感谢。但它仍然崩溃了。应用程序冻结然后崩溃。 你能发布崩溃日志吗? 我已经用日志更新了问题。请看一下:-) 在我的应用程序中,viewpager 中有 5 个片段。两个片段包含谷歌地图。我认为这是导致此异常的原因。 【参考方案1】:

试试这个。

<activity
        android:windowSoftInputMode="stateHidden"
        android:name=".activity.MainActivity"
        android:configChanges="orientation|screenSize"
        android:hardwareAccelerated="true"
        android:label="@string/app_name"
        android:screenOrientation="portrait"
        android:theme="@style/AppTheme.NoActionBar">

否则使用此方法隐藏相对于 EditText 的键盘。

public static void hideKeyboadOnView(Context context, View view) 
    InputMethodManager inputManager = (InputMethodManager)
            context.getSystemService(Context.INPUT_METHOD_SERVICE);

    inputManager.hideSoftInputFromWindow(
            view.getWindowToken(), 0);

   /* inputManager.hideSoftInputFromWindow(activity.getCurrentFocus()
                    .getWindowToken(),
            InputMethodManager.HIDE_NOT_ALWAYS);*/

并在此方法中传递edittext视图。

【讨论】:

【参考方案2】:

我通过添加 android:windowSoftInputMode="adjustPan" 解决了这个问题。谢谢大家指导我。

【讨论】:

以上是关于Android Lollipop 上的键盘隐藏崩溃的主要内容,如果未能解决你的问题,请参考以下文章

在 Lollipop 崩溃前使用 android vector Drawables

在Pre-Lollipop设备中使用.xml向量时,应用程序崩溃Xamarin.Android

android lollipop 中的顶部栏如何隐藏?

Lollipop 上的 Android Button Ripple 和 pre lollipop 上的高亮显示

如何隐藏/禁用软键盘 android 上的完成按钮?

Android 5.0 Lollipop 上的 UnsatisfiedLinkError