アクセシビリティ サービスを使用していますが、非常に奇妙な問題に直面していNPE
ます。
メソッド内onAccessibilityEvent(AccessibilityEvent event)
には、このコードがあります。
if (event.getEventType() == AccessibilityEvent.TYPE_VIEW_CLICKED
&& event.getSource() != null) {
AccessibilityNodeInfo source = event.getSource();
if (waiting && source.isEditable()) {
.....
}else if (!waiting && source.isEditable()) {
.....
}
私が受け取ったクラッシュ レポートはisEditable()
、null ではないことを確認したにもかかわらず、null ポインターで実行されていると言っています。残念ながら、これは私のデバイスでは発生しません。そして、もう1つの奇妙なことは、NPが にしかなく、 が問題なくチェックされているelse if
ことif
です。
これは私の以前のコードでした
AccessibilityNodeInfo source = event.getSource();
if (event.getEventType() == AccessibilityEvent.TYPE_VIEW_CLICKED
&& source != null) {....
友人から最初のコードに切り替えるようにアドバイスされましたが (チェックしてから割り当てます)、それでも解決しませんでした
事前に助けてくれてありがとう。
編集: waiting
ほとんどの場合、それがほとんどfalse
の方法であると思いますNPE
else if
編集2:
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.view.accessibility.AccessibilityNodeInfo.isEditable()' on a null object reference
at com.dhm47.nativeclipboard.AccesService.onAccessibilityEvent(AccesService.java:184)
at android.accessibilityservice.AccessibilityService$1.onAccessibilityEvent(AccessibilityService.java:659)
at android.accessibilityservice.AccessibilityService$IAccessibilityServiceClientWrapper.executeMessage(AccessibilityService.java:752)
at com.android.internal.os.HandlerCaller$MyHandler.handleMessage(HandlerCaller.java:37)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
これisEditable()
は Android の一部ですisEditable()を参照してください