2017-10-20 221 views
0

我使用ZXing Android嵌入式库读取QRCode并且onActivityResult未在QRCode成功扫描后调用,请帮助。ZXing not calling onActivityResult,当扫描QR码

public class ScanActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_send_money); 

     Button scanButton = (Button) findViewById(R.id.scan_button); 
     scanButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       IntentIntegrator integrator = new IntentIntegrator(ScanActivity.this); 
       integrator.initiateScan(); 
      } 
     }); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     System.out.println("*************** Why is this method not called?"); 
     IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data); 
     if (result != null) { 
      if (result.getContents() == null) { 
       Toast.makeText(this, "Result Not Found", Toast.LENGTH_LONG).show(); 
      } else { 
       Toast.makeText(this, "Result is: ", Toast.LENGTH_LONG).show(); 
      } 
     } else { 
      super.onActivityResult(requestCode, resultCode, data); 
     } 
    } 
} 
+1

上面的代码将正常工作。 onActivityResult方法将在成功扫描条形码后调用。我已经测试过这种行为 –

回答

1

这段代码的问题是,我已经在清单文件

<activity 
    android:name=".ScanActivity" android:noHistory="true" /> 

删除android:noHistory="true"解决使用android:noHistory="true"ScanActivity问题

<activity 
    android:name=".ScanActivity" /> 
0
IntentIntegrator integrator = new IntentIntegrator(ScanActivity.this); 
      integrator.initiateScan(); 

integrator.initiateScan();不会调用或不反映startActivityForResult操作。

你必须调用startActivityForResult,以便让你可以有回调的onActivityResult