У меня есть приложение, которое должно сканировать штрих-код, чтобы получить код, прежде чем он сможет продолжить.Android onActivityResult запускается до начала активности!
Я использую этот код для запуска сканирования активность:
finish = (Button) findViewById(R.id.finishButton);
finish.setOnClickListener(new OnClickListener() {
public void onClick(View viewParam) {
/*Prompt the user to scan the barcode */
new AlertDialog.Builder(Visit.this)
.setMessage("Please Scan the clients barcode to complete the visit")
.setPositiveButton("Scan Barcode", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//Start the scan application
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
startActivityForResult(intent, 0);
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//Execute some method call
Toast.makeText(Visit.this, "Scan declined...", Toast.LENGTH_SHORT).show();
}
})
.show();
/* End of Scan prompt */
}
});
Вышеприведенный код делает устанавливает слушатель на кнопке с надписью «закончил» Когда кнопка нажата, отображается подсказка попросив для сканирования штрих-кода или отмены.
Нажатие кнопки «Сканирование штрих-кода» запускает новое действие, которое запускает сканирование.
У меня есть следующий код, созданный для чтения результата сканирования по возвращению из сканирования:
/* Return from scanning barcode */
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
;
if (resultCode == Activity.RESULT_OK && requestCode == 0) {
Bundle extras = data.getExtras();
String result = extras.getString("SCAN_RESULT");
}
Toast.makeText(Visit.this, "request code: "+requestCode+" result code = "+resultCode+ "\nRESULT_OK: "+Activity.RESULT_OK, Toast.LENGTH_SHORT).show();
}
Что очень просто (на данный момент) выводит результат avtivity в сообщении тоста.
Проблема заключается в том, что метод onActivityResult запускается, как только я нажимаю кнопку сканирования штрих-кода.
Процесс сканирования работает отлично, как я могу видеть результаты сканирования в LogCat., Однако, поскольку он срабатывает слишком рано метод onActivityResult никогда не получает результат сканирования и код результата всегда -1
Я пропустил здесь шаг? есть ли какой-нибудь способ получить onActivityResult, чтобы дождаться завершения действия?
Благодаря
Kevin
Ты спас меня по крайней мере час отладки с этим! Я использовал его в вложенном фрагменте ViewFlipper, и у меня была такая же проблема. Исправлена ошибка с удалением одного экземпляра. – pkk
@pkk Рад быть кому-то полезен! –
thx! android: launchMode = "singleTask" также вызывает такую проблему – thecr0w