【问题标题】:android onActivityResult: Attempt to invoke virtual method on a null object referenceandroid onActivityResult:尝试在空对象引用上调用虚拟方法
【发布时间】:2016-03-22 05:13:26
【问题描述】:

我正在为cordova android 开发插件。它打开一个自定义活动并将数据集返回给插件。

所有事情都在活动中运行良好。但是当活动完成时,它崩溃并给我这个错误:

Attempt to invoke virtual method 'void org.apache.cordova.CallbackContext.success(java.lang.String)' on a null object reference
E/AndroidRuntime( 2697):    at android.app.ActivityThread.deliverResults(ActivityThread.java:3539)
E/AndroidRuntime( 2697):    at android.app.ActivityThread.handleSendResult(ActivityThread.java:3582)
E/AndroidRuntime( 2697):    at android.app.ActivityThread.access$1300(ActivityThread.java:144)
E/AndroidRuntime( 2697):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1327)
E/AndroidRuntime( 2697):    at android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime( 2697):    at android.os.Looper.loop(Looper.java:135)
E/AndroidRuntime( 2697):    at android.app.ActivityThread.main(ActivityThread.java:5221)
E/AndroidRuntime( 2697):    at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime( 2697):    at java.lang.reflect.Method.invoke(Method.java:372)
E/AndroidRuntime( 2697):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
E/AndroidRuntime( 2697):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
E/AndroidRuntime( 2697): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void org.apache.cordova.CallbackContext.success(java.lang.String)' on a null object reference
E/AndroidRuntime( 2697):    at com.faiz.faizOk.onActivityResult(faizOk.java:147)
E/AndroidRuntime( 2697):    at org.apache.cordova.CordovaInterfaceImpl.onActivityResult(CordovaInterfaceImpl.java:151)
E/AndroidRuntime( 2697):    at org.apache.cordova.CordovaActivity.onActivityResult(CordovaActivity.java:348)
E/AndroidRuntime( 2697):    at android.app.Activity.dispatchActivityResult(Activity.java:6139)
E/AndroidRuntime( 2697):    at android.app.ActivityThread.deliverResults(ActivityThread.java:3535)
E/AndroidRuntime( 2697):    
... 10 more

这是我的 android onActivityResult 方法

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    System.out.println("finished native activity proceess...");

    String message = " :finished activity from native: ";
    callbackContext.success(message);
}

【问题讨论】:

  • 可能是 callbackContext null
  • 我尝试使用this.callbackContext.success(message) 也不起作用。同样的错误
  • callbackContext 代表什么?
  • 它是cordova插件的executepublic boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException
  • 打印requestCode和data,你就会知道有没有value

标签: android cordova-plugins


【解决方案1】:

您必须初始化回调上下文。可能是您已声明它但尚未初始化,如下所示: 1.回调上下文myvar; myvar.mymethod

这将抛出一个空指针,因为回调上下文已声明但未初始化。 2. 要解决上述问题,您必须初始化。

回调上下文 myvar =新回调上下文;; myvar.mymethod

【讨论】:

    【解决方案2】:

    你还没有初始化变量callbackContext。在您的 onCreate() 方法上,您应该初始化它,例如callbackContext = new CallbackContext()是CallbackContext类,对应callbackContext的类型。

    【讨论】:

    • 所以意思是我必须这样做:@override public void onCreate(){ callbackContext = new CallbackContext(); } 我不确定我是否理解这一点。有人可以指出我的基本概念吗?我是新来的。抱歉这个菜鸟问题
    猜你喜欢
    • 2023-03-13
    • 1970-01-01
    • 2021-08-02
    • 2018-12-08
    • 1970-01-01
    • 1970-01-01
    • 2018-12-17
    • 1970-01-01
    相关资源
    最近更新 更多