问题描述
java.lang.NullPointerException: Attempt to invoke direct method 'void android.widget.Editor$SelectionModifierCursorController.initDrawables()' on a null object reference
at android.widget.Editor$SelectionModifierCursorController.access$300(Editor.java:6726)
at android.widget.Editor.getEmailPopupWindow(Editor.java:1476)
at android.widget.Editor.showEmailPopupWindow(Editor.java:1484)
at android.widget.Editor.handleEmailPopup(Editor.java:1463)
at android.widget.Editor.updateCursorPosition(Editor.java:2106)
at android.widget.TextView.getUpdatedHighlightPath(TextView.java:7824)
at android.widget.TextView.onDraw(TextView.java:8009)
at android.view.View.draw(View.java:21628)
at android.view.View.updatedisplayListIfDirty(View.java:20497)
at android.view.ViewGroup.recreateChilddisplayList(ViewGroup.java:4409)
at android.view.ViewGroup.dispatchGetdisplayList(ViewGroup.java:4382)
at android.view.View.updatedisplayListIfDirty(View.java:20457)
at android.view.ViewGroup.recreateChilddisplayList(ViewGroup.java:4409)
at android.view.ViewGroup.dispatchGetdisplayList(ViewGroup.java:4382)
at android.view.View.updatedisplayListIfDirty(View.java:20457)
at android.view.ViewGroup.recreateChilddisplayList(ViewGroup.java:4409)
at android.view.ViewGroup.dispatchGetdisplayList(ViewGroup.java:4382)
at android.view.View.updatedisplayListIfDirty(View.java:20457)
at android.view.ViewGroup.recreateChilddisplayList(ViewGroup.java:4409)
at android.view.ViewGroup.dispatchGetdisplayList(ViewGroup.java:4382)
at android.view.View.updatedisplayListIfDirty(View.java:20457)
at android.view.ViewGroup.recreateChilddisplayList(ViewGroup.java:4409)
at android.view.ViewGroup.dispatchGetdisplayList(ViewGroup.java:4382)
at android.view.View.updatedisplayListIfDirty(View.java:20457)
at android.view.ViewGroup.recreateChilddisplayList(ViewGroup.java:4409)
at android.view.ViewGroup.dispatchGetdisplayList(ViewGroup.java:4382)
at android.view.View.updatedisplayListIfDirty(View.java:20457)
at android.view.ViewGroup.recreateChilddisplayList(ViewGroup.java:4409)
at android.view.ViewGroup.dispatchGetdisplayList(ViewGroup.java:4382)
at android.view.View.updatedisplayListIfDirty(View.java:20457)
at android.view.ViewGroup.recreateChilddisplayList(ViewGroup.java:4409)
at android.view.ViewGroup.dispatchGetdisplayList(ViewGroup.java:4382)
at android.view.View.updatedisplayListIfDirty(View.java:20457)
at android.view.ViewGroup.recreateChilddisplayList(ViewGroup.java:4409)
at android.view.ViewGroup.dispatchGetdisplayList(ViewGroup.java:4382)
at android.view.View.updatedisplayListIfDirty(View.java:20457)
at android.view.ViewGroup.recreateChilddisplayList(ViewGroup.java:4409)
at android.view.ViewGroup.dispatchGetdisplayList(ViewGroup.java:4382)
at android.view.View.updatedisplayListIfDirty(View.java:20457)
at android.view.ViewGroup.recreateChilddisplayList(ViewGroup.java:4409)
at android.view.ViewGroup.dispatchGetdisplayList(ViewGroup.java:4382)
at android.view.View.updatedisplayListIfDirty(View.java:20457)
at android.view.ViewGroup.recreateChilddisplayList(ViewGroup.java:4409)
at android.view.ViewGroup.dispatchGetdisplayList(ViewGroup.java:4382)
at android.view.View.updatedisplayListIfDirty(View.java:20457)
at android.view.ViewGroup.recreateChilddisplayList(ViewGroup.java:4409)
at android.view.ViewGroup.dispatchGetdisplayList(ViewGroup.java:4382)
at android.view.View.updatedisplayListIfDirty(View.java:20457)
at android.view.ViewGroup.recreateChilddisplayList(ViewGroup.java:4409)
at android.view.ViewGroup.dispatchGetdisplayList(ViewGroup.java:4382)
at android.view.View.updatedisplayListIfDirty(View.java:20457)
at android.view.ViewGroup.recreateChilddisplayList(ViewGroup.java:4409)
at android.view.ViewGroup.dispatchGetdisplayList(ViewGroup.java:4382)
at android.view.View.updatedisplayListIfDirty(View.java:20457)
at android.view.ViewGroup.recreateChilddisplayList(ViewGroup.java:4409)
at android.view.ViewGroup.dispatchGetdisplayList(ViewGroup.java:4382)
at android.view.View.updatedisplayListIfDirty(View.java:20457)
at android.view.ViewGroup.recreateChilddisplayList(ViewGroup.java:4409)
at android.view.ViewGroup.dispatchGetdisplayList(ViewGroup.java:4382)
at android.view.View.updatedisplayListIfDirty(View.java:20457)
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:3713)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:3508)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2845)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1800)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7792)
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:7560)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
import { Platform,TextInput } from 'react-native';
const {版本} =平台;
const brandNeedingWorkaround = ['redmi','xiaomi','poco','pocophone']; const needsXiaomiWorkaround = brandNeedingWorkaround.includes(RNInfo.getBrand()。toLowerCase()) &&版本> 28;
const Inputtextwrapper = forwardRef(({{onFocus,caretHidden,... others},ref)=> { const [hackCaretHidden,setHackCaretHidden] = useState(needsXiaomiWorkaround?true:caretHidden);
const handleFocus = useCallback(() => {
if (needsXiaomiWorkaround) {
setHackCaretHidden(caretHidden);
}
if (onFocus) onFocus();
},[onFocus,caretHidden]);
return (
<TextInput
ref={ref}
{...others}
onFocus={handleFocus}
caretHidden={hackCaretHidden}
/>
);
});
解决方法
我希望这可以为您提供帮助
https://github.com/facebook/react-native/issues/27204#issuecomment-556998391
一些开发人员可以在TextInput中使用“可编辑”道具来工作
const [editable,setEditable] = React.useState(false)
React.useEffect(() => {
React.useEffect(() => {
setTimeout(() => {
setEditable(true)
},100)
},[])
return (
<TextInput
editable={editable}
...
/>
)
,
或者干脆
const [editable,setEditable] = useState(false);
useEffect(() => {
setEditable(true);
},[]);
<TextInput
editable={editable}
/>
也帮我解决了