2011-12-23 71 views
0

我有一个活动,其行为如下: 条形码扫描器通过IntentIntegrator对象调用,它读取一个URI。 然后我想通过它的方法connect()将成功的URI传递给一个名为JunctionInterface的对象。在Android上使用意图问题

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 =新的URI时,所述URI是清楚地检索(scanResult.getContents())。不幸的是,JunctionInterface.connect()没有被触发。 更糟糕的是,当我尝试在integrator.initiateScan()(主要使用activity.startActivityForResult(intentScan,REQUEST_CODE))之后将int i = 0这样简单的东西放入应用程序时,应用程序强制关闭。

这段代码是怎么回事?有没有办法解决它,并使其表现得像我想要的? 谢谢。

+0

请发布logcat错误 – Newts 2011-12-23 12:50:52

回答

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(); 
    } 
    } 
} 
+0

非常感谢!我真的很接近...但是我相信在onCreate中调用initiateScan()之后我什么也做不了。 – 2011-12-23 15:58:21

+0

对不起,没有理解你的问题)你能解释一下你的意思吗? – Yury 2011-12-23 16:02:51

+0

应用程序似乎阻止,当我不会执行以下操作时: IntentIntegrator integrator = new IntentIntegrator(this); integrator.initiateScan(); /*一些随机码*/ } public void onActivityResult ... – 2011-12-23 16:36:34