0

我有一个行为如下的活动:通过 IntentIntegrator 对象调用条形码扫描仪,它读取 URI。然后我想通过它的方法 connect() 将生成的 URI 传递给一个名为 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() 没有被触发。更糟糕的是,当我尝试在 int i=0 之后放置 int i=0 之类的简单内容 integrator.initiateScan() (主要使用 activity.startActivityForResult(intentScan, REQUEST_CODE))时,应用程序会强制关闭。

这段代码有什么问题?有没有办法修复它并让它表现得像我想要的那样?谢谢。

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 回答