NPE之后!= null

时间:2015-08-24 21:14:09

标签: java android accessibilityservice

我正在使用辅助服务,我面临一个非常奇怪的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()。不幸的是,这不会发生在我的任何设备上。另一个奇怪的事情是NP只在else if中,if被检查没有任何问题。

这是我的优惠代码

AccessibilityNodeInfo source = event.getSource();
if (event.getEventType() == AccessibilityEvent.TYPE_VIEW_CLICKED 
       && source != null) {....

我被朋友建议切换到第一个代码(检查然后分配),但它仍然没有帮助

感谢您提前提供任何帮助。

编辑: waiting大部分时间都是false,我认为NPE主要是else if < / p>

编辑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()

0 个答案:

没有答案