2017-04-10 6 views
0

私は様々なアクティビティから起動したいProductActivity.classを持っています。 onActivityResultの中から下のReaderActivityクラスから正常に起動できますが、他のクラスのonCreateメソッドからは起動できません。私は何が欠けていますか?私はProductActivity.classを起動しようとした場合Android:起動アクティビティはonCreateから失敗しますが、onActivityResultから動作します

public class ReaderActivity extends AppCompatActivity { 

private Button scan_btn, verifyButton; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_reader); 
     scan_btn = (Button) findViewById(R.id.scan_btn); 
     verifyButton = (Button) findViewById(R.id.buttonVerify); 
     final Activity activity = this; 



     scan_btn.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        ((myApplication) activity.getApplication()).setWhichButton("scan"); 
        IntentIntegrator integrator = new IntentIntegrator(activity); 
        integrator.setDesiredBarcodeFormats(IntentIntegrator.ALL_CODE_TYPES); 
        integrator.setCameraId(0); 
        integrator.initiateScan(); 


       } 
      }); 

     verifyButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       ((myApplication) activity.getApplication()).setWhichButton("verify"); 
       IntentIntegrator integrator = new IntentIntegrator(activity); 
       integrator.setDesiredBarcodeFormats(IntentIntegrator.ALL_CODE_TYPES); 
       integrator.setCameraId(0); 
       integrator.initiateScan(); 

      } 
     }); 
    } 


protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

     IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data); 

     String val = ((myApplication) this.getApplication()).getWhichButton(); 

if (result !=null) { 
//....more code... 

if (condition1) { 
Intent intentVerifyFail = new Intent(getBaseContext(), VerifyFailActivity.class); 
           startActivity(intentVerifyFail); 
} 
if (condition2){ 

Intent intentVerifySuccess = new Intent(getBaseContext(), VerifySuccessActivity.class); 
            intentVerifySuccess.putExtra("ID", results); 
            startActivity(intentVerifySuccess); 
} 

} 

if(condition3){ 

Intent intentProduct = new Intent(getBaseContext(), ProductActivity.class); 
          intentProduct.putExtra("ID", finalResults); 
          intentProduct.putExtra("SIGNER", accountOut); 
          intentProduct.putExtra("TIME", sTime); 
          startActivity(intentProduct); 
} 
} 
} 

は今VerifiySuccessActivityとVerifyFailActivityの両方から、それは以下の

public class VerifySuccessActivity extends AppCompatActivity { 

    private Button OKButton; 
    private EditText productIDVerified; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_verify_success); 
     OKButton = (Button) findViewById(R.id.buttonOKVerifySuccess); 
     productIDVerified = (EditText) findViewById(R.id.textSKUVerified); 

     String productSKU= getIntent().getExtras().getString("ID"); 
     productIDVerified.setText(productSKU, TextView.BufferType.EDITABLE); 

     OKButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

       Intent intent = new Intent(getBaseContext(), ProductActivity.class); 

       startActivity(intent); 

      } 
     }); 
    } 
} 

エラーコードがクラッシュ:

FATAL EXCEPTION: main 
                       Process: com.example.newpc.qrcode, PID: 24682 
                       java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.newpc.qrcode/com.example.newpc.qrcode.ProductActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.os.Bundle.getString(java.lang.String)' on a null object reference 
                        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2521) 
                        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2595) 
                        at android.app.ActivityThread.access$800(ActivityThread.java:178) 
                        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1470) 
                        at android.os.Handler.dispatchMessage(Handler.java:111) 
                        at android.os.Looper.loop(Looper.java:194) 
                        at android.app.ActivityThread.main(ActivityThread.java:5631) 
                        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:959) 
                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754) 
                       Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.os.Bundle.getString(java.lang.String)' on a null object reference 
                        at com.example.newpc.qrcode.ProductActivity.onCreate(ProductActivity.java:21) 
                        at android.app.Activity.performCreate(Activity.java:6092) 
                        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1112) 
                        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2468) 
                        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2595)  
                        at android.app.ActivityThread.access$800(ActivityThread.java:178)  
                        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1470)  
                        at android.os.Handler.dispatchMessage(Handler.java:111)  
                        at android.os.Looper.loop(Looper.java:194)  
                        at android.app.ActivityThread.main(ActivityThread.java:5631)  
                        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:959)  
                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754)  
+0

NullPointerExceptionがあります。ログは、実行する必要がない文を正確に示します。 – greenapps

答えて

1

この行はクラッシュを引き起こしているの

​​3210

あなたが得たエキストラがヌルでないかどうか確認する必要があります

String productSKU= getIntent().getExtras().getString("ID"); 
Bundle extras = getIntent().getExtras(); 
if (extras != null) { 
    productSku = extras.getString("ID"); 
} 
関連する問題