Проблема с использованием намерений на Android - PullRequest
0 голосов
/ 23 декабря 2011

У меня есть действие, которое ведет себя так: сканер штрих-кода вызывается через объект IntentIntegrator, он считывает URI.Затем я хочу передать полученный URI в объект, называемый JunctionInterface, через его метод connect ().

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 = new URI (scanResult.getContents ()).К сожалению, JunctionInterface.connect () не срабатывает.Еще хуже, когда я пытаюсь поместить что-то столь же простое, как int i = 0, после integrator.initiateScan () (который в основном использует activity.startActivityForResult (intentScan, REQUEST_CODE)), приложение принудительно закрывается.дело с этим кодом?Есть ли способ исправить это и заставить его вести себя так, как я хочу?Спасибо.

1 Ответ

2 голосов
/ 23 декабря 2011

Попробуйте тоже.Я просто переместил часть вашего кода в другое место.

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