【问题标题】:NullPointerException in TextInputLayout on Xiaomi with Android 10带有 Android 10 的小米上 TextInputLayout 中的 NullPointerException
【发布时间】:2020-08-24 09:49:49
【问题描述】:

我最近开始在我的安卓应用中使用TextInputLayout。之后,奇怪的NullPointerException 错误开始出现。这些错误仅发生在带有Androind 10Xiaomi 设备上。

Fatal Exception: java.lang.NullPointerException
Attempt to invoke direct method 'void android.widget.Editor$SelectionModifierCursorController.initDrawables()' on a null object reference
android.widget.Editor$SelectionModifierCursorController.access$300

没有办法重现错误(我没有小米设备)。上网搜索发现,在TextInputLayout字段中尝试输入邮箱时出现此错误。

网上有React Native的解决方案:https://github.com/facebook/react-native/issues/27204

很遗憾,我找不到 Java 的解决方案。

来自 Crashlytics 的屏幕截图:

完整报告:

android.widget.Editor$SelectionModifierCursorController.access$300 (Editor.java:6709)
android.widget.Editor.getEmailPopupWindow (Editor.java:1471)
android.widget.Editor.showEmailPopupWindow (Editor.java:1479)
android.widget.Editor.handleEmailPopup (Editor.java:1458)
android.widget.Editor.updateCursorPosition (Editor.java:2101)
android.widget.TextView.getUpdatedHighlightPath (TextView.java:7823)
android.widget.TextView.onDraw (TextView.java:8008)
android.view.View.draw (View.java:21594)
android.view.View.updateDisplayListIfDirty (View.java:20437)
android.view.ViewGroup.recreateChildDisplayList (ViewGroup.java:4456)
android.view.ViewGroup.dispatchGetDisplayList (ViewGroup.java:4429)
android.view.View.updateDisplayListIfDirty (View.java:20388)
android.view.View.draw (View.java:21312)
android.view.ViewGroup.drawChild (ViewGroup.java:4472)
android.view.ViewGroup.dispatchDraw (ViewGroup.java:4231)
android.view.View.draw (View.java:21601)
com.google.android.material.textfield.TextInputLayout.draw (TextInputLayout.java:3064)
android.view.View.updateDisplayListIfDirty (View.java:20437)
android.view.ViewGroup.recreateChildDisplayList (ViewGroup.java:4456)
android.view.ViewGroup.dispatchGetDisplayList (ViewGroup.java:4429)
android.view.View.updateDisplayListIfDirty (View.java:20388)
android.view.ViewGroup.recreateChildDisplayList (ViewGroup.java:4456)
android.view.ViewGroup.dispatchGetDisplayList (ViewGroup.java:4429)
android.view.View.updateDisplayListIfDirty (View.java:20388)
android.view.ViewGroup.recreateChildDisplayList (ViewGroup.java:4456)
android.view.ViewGroup.dispatchGetDisplayList (ViewGroup.java:4429)
android.view.View.updateDisplayListIfDirty (View.java:20388)
android.view.ViewGroup.recreateChildDisplayList (ViewGroup.java:4456)
android.view.ViewGroup.dispatchGetDisplayList (ViewGroup.java:4429)
android.view.View.updateDisplayListIfDirty (View.java:20388)
android.view.ViewGroup.recreateChildDisplayList (ViewGroup.java:4456)
android.view.ViewGroup.dispatchGetDisplayList (ViewGroup.java:4429)
android.view.View.updateDisplayListIfDirty (View.java:20388)
android.view.ViewGroup.recreateChildDisplayList (ViewGroup.java:4456)
android.view.ViewGroup.dispatchGetDisplayList (ViewGroup.java:4429)
android.view.View.updateDisplayListIfDirty (View.java:20388)
android.view.ViewGroup.recreateChildDisplayList (ViewGroup.java:4456)
android.view.ViewGroup.dispatchGetDisplayList (ViewGroup.java:4429)
android.view.View.updateDisplayListIfDirty (View.java:20388)
android.view.ThreadedRenderer.updateViewTreeDisplayList (ThreadedRenderer.java:575)
android.view.ThreadedRenderer.updateRootDisplayList (ThreadedRenderer.java:581)
android.view.ThreadedRenderer.draw (ThreadedRenderer.java:654)
android.view.ViewRootImpl.draw (ViewRootImpl.java:3844)
android.view.ViewRootImpl.performDraw (ViewRootImpl.java:3635)
android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:2955)
android.view.ViewRootImpl.doTraversal (ViewRootImpl.java:1865)
android.view.ViewRootImpl$TraversalRunnable.run (ViewRootImpl.java:8029)
android.view.Choreographer$CallbackRecord.run (Choreographer.java:969)
android.view.Choreographer.doCallbacks (Choreographer.java:793)
android.view.Choreographer.doFrame (Choreographer.java:728)
android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:954)
android.os.Handler.handleCallback (Handler.java:883)
android.os.Handler.dispatchMessage (Handler.java:100)
android.os.Looper.loop (Looper.java:224)
android.app.ActivityThread.main (ActivityThread.java:7509)
java.lang.reflect.Method.invoke (Method.java)
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:539)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:995)

【问题讨论】:

  • 面临同样的问题

标签: java android exception android-10.0 xiaomi


【解决方案1】:

这是我为修复崩溃所做的。它会在编辑电子邮件地址时禁用光标,但不会崩溃。

if (android.os.Build.MANUFACTURER.equals("Xiaomi", ignoreCase = true) &&
    android.os.Build.VERSION.SDK_INT == android.os.Build.VERSION_CODES.Q) {
    editText.isCursorVisible = false
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多