在onActivityResult()中查看获取null

时间:2017-05-04 15:25:39

标签: android android-fragments android-intent nullpointerexception

我正在尝试获取条形码扫描结果,但有时textview正在获得null。是否在加载片段或任何其他问题之前获得扫描结果?

以下是我的崩溃报告:

Fatal Exception: java.lang.RuntimeException: Unable to resume activity {com.example.infinity.ilfms/com.example.infinity.ilfms.views.material_collected.MaterialCollectedActivity}: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=135123, result=-1, data=Intent { act=com.google.zxing.client.android.SCAN flg=0x80000 (has extras) }} to activity {com.example.infinity.ilfms/com.example.infinity.ilfms.views.material_collected.MaterialCollectedActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.EditText.setText(java.lang.CharSequence)' on a null object reference
       at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3294)
       at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3325)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2635)
       at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4313)
       at android.app.ActivityThread.-wrap15(ActivityThread.java)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1488)
       at android.os.Handler.dispatchMessage(Handler.java:111)
       at android.os.Looper.loop(Looper.java:207)
       at android.app.ActivityThread.main(ActivityThread.java:5736)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:910)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771)
Caused by java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=135123, result=-1, data=Intent { act=com.google.zxing.client.android.SCAN flg=0x80000 (has extras) }} to activity {com.example.infinity.ilfms/com.example.infinity.ilfms.views.material_collected.MaterialCollectedActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.EditText.setText(java.lang.CharSequence)' on a null object reference
       at android.app.ActivityThread.deliverResults(ActivityThread.java:3925)
       at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3276)
       at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3325)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2635)
       at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4313)
       at android.app.ActivityThread.-wrap15(ActivityThread.java)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1488)
       at android.os.Handler.dispatchMessage(Handler.java:111)
       at android.os.Looper.loop(Looper.java:207)
       at android.app.ActivityThread.main(ActivityThread.java:5736)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:910)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771)
Caused by java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.EditText.setText(java.lang.CharSequence)' on a null object reference
       at com.example.infinity.ilfms.views.material_collected.MaterialCollectedFragment.refreshViewOnSuccessIfAnyForOthers(MaterialCollectedFragment.java:373)
       at com.example.infinity.ilfms.views.base_view.fragements.BaseFragment.onActivityResult(BaseFragment.java:134)
       at android.support.v4.app.FragmentActivity.onActivityResult(FragmentActivity.java:164)
       at android.app.Activity.dispatchActivityResult(Activity.java:6475)
       at android.app.ActivityThread.deliverResults(ActivityThread.java:3921)
       at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3276)
       at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3325)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2635)
       at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4313)
       at android.app.ActivityThread.-wrap15(ActivityThread.java)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1488)
       at android.os.Handler.dispatchMessage(Handler.java:111)
       at android.os.Looper.loop(Looper.java:207)
       at android.app.ActivityThread.main(ActivityThread.java:5736)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:910)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771)

这是我的onActivityResult():

@Override
    protected void refreshViewOnSuccessIfAnyForOthers(int requestCode, int typeOfImage, Intent data, int resultCode) {
        super.refreshViewOnSuccessIfAnyForOthers(requestCode, typeOfImage, data, resultCode);

        if (requestCode == 4051) {
            if (resultCode == RESULT_OK) {
                //get the extras that are returned from the intent
                String contents = data.getStringExtra("SCAN_RESULT");
                Logger.logError(LOG_TAG,"Barcode result "+contents);
                String format = data.getStringExtra("SCAN_RESULT_FORMAT");
                if(etRouterCode!=null) {
                    etRouterCode.setText(contents);
                }
            }
        }
}

1 个答案:

答案 0 :(得分:0)

我找到了相同的答案。在我捕获条形码后重新创建片段时,片段在创建视图之前接收数据。 这就是应用程序崩溃的原因。