我的活动表现如下: 条形码扫描器通过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()没有被触发。 更糟糕的是,当我尝试在integrator.initiateScan()(主要使用activity.startActivityForResult(intentScan,REQUEST_CODE))之后放入像int i = 0这样简单的东西时,应用程序强制关闭。
这段代码有什么问题?有没有办法解决它并使其表现得像我想要的? 感谢。
答案 0 :(得分: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();
}
}
}