为什么在重新启动应用程序时在onActivityResult上获取NullPointerException?

时间:2014-08-13 17:05:46

标签: android nullpointerexception onactivityresult relaunch

我对活动的onActivityResult方法(Cordova活动)有问题,以下是发生这种情况的情况

  1. 启动Activity1
  2. 名为Activity2的StartActivityForResult
  3. 按主页按钮
  4. 点击应用图标
  5. 重新启动应用

    我正在调用splash事件,然后调用activity1但是这给了onActivityResult上的nullpointerException,并且活动也没有显示视图。

    任何人都可以给我解决方案以避免此错误吗?

    <activity
            android:name=".MDLIVEMain"
            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale"
            android:label="@string/app_name"
            android:launchMode="singleTask"
            android:taskAffinity=""
            android:clearTaskOnLaunch="true"
            android:finishOnTaskLaunch="true"
            android:excludeFromRecents="true"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Black.NoTitleBar"
            android:windowSoftInputMode="adjustResize" />
    

    结果部分的启动活动

     Intent passcodeIntent = new Intent(getActivity(), PasscodeActivity.class);
     passcodeIntent.putExtra("passcode_data_page",passcodeDataPage);
     startActivityForResult(passcodeIntent, PASSCODE_RESULT_PAGE);
    

    OnaActivityResult代码

         @Override
        protected void onActivityResult(int requestCode, int responseCode, Intent intent) {
            CordovaPlugin callback = this.activityResultCallbacks;
            try {
                Log.d("onActivityResult",requestCode+"-"+responseCode+"");
                if (requestCode == REQUEST_CODE_RESOLVE_ERR && responseCode == RESULT_OK) {
                    mConnectionResult = null;
                    mPlusClient.connect();
                }
    
                if (callback != null) {
                    callback.onActivityResult(requestCode, responseCode, intent);
                }
                getActivity().runOnUiThread(new Runnable() {
                    public void run() {
                        mConnectionProgressDialog.dismiss();
                    }
                });
    
                if (requestCode == PASSCODE_RESULT_PAGE) {
                    if (responseCode == RESULT_OK) {
                        activityVisible = true;
                        this.callbackContext.success(intent.getExtras().getString("passcode_pin"));
                    } else {
                        this.callbackContext.success(intent.getExtras().getString("passcode_pin"));
                        isFromPasscodePage = true;
                    }
                }
            }catch (Exception e){
                e.printStackTrace();
    //            finish();
            }
        }
    

    错误来到这里

    this.callbackContext.success(intent.getExtras().getString("passcode_pin"));
                    isFromPasscodePage = true;
    

2 个答案:

答案 0 :(得分:0)

onActivityResult()无法与android:launchMode="singleTask"一起使用,请尝试删除此属性。

答案 1 :(得分:0)

在onActivityResult中解雇(进度)对话框是值得怀疑的。在其他一些活动处于活动状态后调用onActivityResult。无论如何,从runnable调用它是不必要的。

您正在调用intent.getExtras()。getString。无法保证intent具有额外内容或字符串“passcode_pin”,尤其是在密码活动被取消时。