android - 在运行 Android 10 的小米设备上,EditText TextInput 中的电子邮件崩溃
问题描述
最近我在 google play 控制台中遇到了崩溃。
java.lang.NullPointerException:
at android.widget.Editor$SelectionModifierCursorController.access$300 (Editor.java:6696)
at android.widget.Editor.getEmailPopupWindow (Editor.java:1469)
at android.widget.Editor.showEmailPopupWindow (Editor.java:1477)
at android.widget.Editor.handleEmailPopup (Editor.java:1456)
at android.widget.Editor.updateCursorPosition (Editor.java:2099)
at android.widget.TextView.getUpdatedHighlightPath (TextView.java:7813)
at android.widget.TextView.onDraw (TextView.java:7998)
at android.view.View.draw (View.java:21472)
at android.view.View.updateDisplayListIfDirty (View.java:20349)
at android.view.View.draw (View.java:21204)
at android.view.ViewGroup.drawChild (ViewGroup.java:4412)
at android.view.ViewGroup.dispatchDraw (ViewGroup.java:4171)
at android.view.View.updateDisplayListIfDirty (View.java:20340)
at android.view.View.draw (View.java:21204)
at android.view.ViewGroup.drawChild (ViewGroup.java:4412)
at android.view.ViewGroup.dispatchDraw (ViewGroup.java:4171)
at android.view.View.updateDisplayListIfDirty (View.java:20340)
at android.view.View.draw (View.java:21204)
at android.view.ViewGroup.drawChild (ViewGroup.java:4412)
at androidx.recyclerview.widget.RecyclerView.drawChild (RecyclerView.java:4820)
at android.view.ViewGroup.dispatchDraw (ViewGroup.java:4171)
at android.view.View.updateDisplayListIfDirty (View.java:20340)
at android.view.View.draw (View.java:21204)
at android.view.ViewGroup.drawChild (ViewGroup.java:4412)
at android.view.ViewGroup.dispatchDraw (ViewGroup.java:4171)
at android.view.View.draw (View.java:21475)
at android.view.View.updateDisplayListIfDirty (View.java:20349)
at android.view.View.draw (View.java:21204)
at android.view.ViewGroup.drawChild (ViewGroup.java:4412)
at android.view.ViewGroup.dispatchDraw (ViewGroup.java:4171)
at android.view.View.draw (View.java:21475)
at android.view.View.updateDisplayListIfDirty (View.java:20349)
at android.view.View.draw (View.java:21204)
at android.view.ViewGroup.drawChild (ViewGroup.java:4412)
at android.view.ViewGroup.dispatchDraw (ViewGroup.java:4171)
at androidx.constraintlayout.widget.ConstraintLayout.dispatchDraw (ConstraintLayout.java:2023)
at android.view.View.updateDisplayListIfDirty (View.java:20340)
at android.view.View.draw (View.java:21204)
at android.view.ViewGroup.drawChild (ViewGroup.java:4412)
at androidx.coordinatorlayout.widget.CoordinatorLayout.drawChild (CoordinatorLayout.java:1246)
at android.view.ViewGroup.dispatchDraw (ViewGroup.java:4171)
at android.view.View.updateDisplayListIfDirty (View.java:20340)
at android.view.View.draw (View.java:21204)
at android.view.ViewGroup.drawChild (ViewGroup.java:4412)
at android.view.ViewGroup.dispatchDraw (ViewGroup.java:4171)
at android.view.View.draw (View.java:21475)
at android.view.View.updateDisplayListIfDirty (View.java:20349)
at android.view.View.draw (View.java:21204)
at android.view.ViewGroup.drawChild (ViewGroup.java:4412)
at android.view.ViewGroup.dispatchDraw (ViewGroup.java:4171)
at android.view.View.updateDisplayListIfDirty (View.java:20340)
at android.view.View.draw (View.java:21204)
at android.view.ViewGroup.drawChild (ViewGroup.java:4412)
at android.view.ViewGroup.dispatchDraw (ViewGroup.java:4171)
at android.view.View.updateDisplayListIfDirty (View.java:20340)
at android.view.View.draw (View.java:21204)
at android.view.ViewGroup.drawChild (ViewGroup.java:4412)
at android.view.ViewGroup.dispatchDraw (ViewGroup.java:4171)
at android.view.View.updateDisplayListIfDirty (View.java:20340)
at android.view.View.draw (View.java:21204)
at android.view.ViewGroup.drawChild (ViewGroup.java:4412)
at android.view.ViewGroup.dispatchDraw (ViewGroup.java:4171)
at android.view.View.updateDisplayListIfDirty (View.java:20340)
at android.view.View.draw (View.java:21204)
at android.view.ViewGroup.drawChild (ViewGroup.java:4412)
at android.view.ViewGroup.dispatchDraw (ViewGroup.java:4171)
at android.view.View.draw (View.java:21475)
at com.android.internal.policy.DecorView.draw (DecorView.java:830)
at android.view.View.updateDisplayListIfDirty (View.java:20349)
at android.view.ThreadedRenderer.updateViewTreeDisplayList (ThreadedRenderer.java:575)
at android.view.ThreadedRenderer.updateRootDisplayList (ThreadedRenderer.java:581)
at android.view.ThreadedRenderer.draw (ThreadedRenderer.java:654)
at android.view.ViewRootImpl.draw (ViewRootImpl.java:3687)
at android.view.ViewRootImpl.performDraw (ViewRootImpl.java:3482)
at android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:2819)
at android.view.ViewRootImpl.doTraversal (ViewRootImpl.java:1782)
at android.view.ViewRootImpl$TraversalRunnable.run (ViewRootImpl.java:7785)
at android.view.Choreographer$CallbackRecord.run (Choreographer.java:1031)
at android.view.Choreographer.doCallbacks (Choreographer.java:854)
at android.view.Choreographer.doFrame (Choreographer.java:789)
at android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:1016)
at android.os.Handler.handleCallback (Handler.java:883)
at android.os.Handler.dispatchMessage (Handler.java:100)
at android.os.Looper.loop (Looper.java:224)
at android.app.ActivityThread.main (ActivityThread.java:7520)
at java.lang.reflect.Method.invoke (Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:539)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:950)
设备:红米K20 Pro
安卓版本:10
我在android源代码中找不到这部分代码(嗯,似乎是小米修改)
我在 React-Native 社区发现了同样的问题。
关于如何解决它的任何想法?
UPD:我在完全原生的应用程序上遇到了这个崩溃,没有任何跨平台框架。
解决方案
这次崩溃是操作系统造成的,实际上是小米定制了安卓,10版本的修改导致了这次崩溃。有一个解决方案,caretHidden
按值传递标志true
,这个问题就会消失:
<TextInput
caretHidden={true}
...
我们可以写得好一点:
<TextInput
caretHidden
...
推荐阅读
- java - 为什么在这个基本的 Spring 应用程序中没有调用函数?
- android - TextView Drawable 兼容返回 null
- swift - SwiftUI:如何根据 Picker 的值更新 ForEach 循环的范围
- python - 如何从列表中提取值并将其存储为字典(键值对)?
- android - 如何使用 FCM 插件正确注册插件
- json - 如何计算反应表中的列
- sql - 排除包含除数字以外的任何内容的行
- java - Spring Cloud Contract 未执行 @Before
- android - Android:在调试中使用 RecyclerView 在初始滚动时出现 Jank
- c# - Unity C# 相机出现问题,相机变白