0

このように動作するアクティビティがあります。バーコードスキャナーはIntentIntegratorオブジェクトを介して呼び出され、URIを読み取ります。次に、生成されたURIをそのメソッドconnect()を介してJunctionInterfaceというオブジェクトに渡します。

private URI uri=null;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    IntentIntegrator integrator = new IntentIntegrator(this);
    integrator.initiateScan();
    if(uri!=null) {
        JunctionInterface.connect(JunctionInterface.JX,this, uri);
    }
}
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
  IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
  if (scanResult != null) {
     try {
        uri=new URI(scanResult.getContents());
    } catch (URISyntaxException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } 
  }
}

デバッグすると、uri = new URI(scanResult.getContents())を呼び出すと、uriが明確に取得されることがわかります。残念ながら、JunctionInterface.connect()はトリガーされません。さらに悪いことに、integrator.initiateScan()(主にactivity.startActivityForResult(intentScan、REQUEST_CODE)を使用)の後にint i = 0のような単純なものを配置しようとすると、アプリケーションは強制的に閉じます。

このコードの問題は何ですか?それを修正して、私が望むように動作させる方法はありますか?ありがとう。

4

1 に答える 1

2

これも試してみてください。コードの一部を別の場所に移動しただけです。

private URI uri=null;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    IntentIntegrator integrator = new IntentIntegrator(this);
    integrator.initiateScan();
}
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
  IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
  if (scanResult != null) {
     try {
        uri=new URI(scanResult.getContents());
        if(uri!=null) {
            JunctionInterface.connect(JunctionInterface.JX,this, uri);
        }
    } catch (URISyntaxException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } 
  }
}
于 2011-12-23T13:41:42.910 に答える