0

私のアプリケーションには、qrコードをスキャンするスキャンボタンがあります。コードは次のようになります。

btnScan.setOnClickListener(new OnClickListener() {

                        @Override
                        public void onClick(View v) {
                            Intent intent = new Intent("com.google.zxing.client.android.SCAN");
                            intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
                            startActivityForResult(intent, 1);

                            ClearForm();
                            //if (!CheckCHFID())return;

                            pd = ProgressDialog.show(EnquireActivity.this, "", getResources().getString(R.string.GetingInsuuree));
                            new Thread(){
                                public void run(){
                                    getInsureeInfo();

                                    pd.dismiss();
                                }
                            }.start();

                        }
                    });

問題は、コードをスキャンする前に getInsureeInfo(); という情報を見つけ始めることです。ユーザーがコードを正常にスキャンした後にのみ実行するように制御するにはどうすればよいですか?

前もって感謝します。

4

2 に答える 2

2

スキャン後に発生させたい部分をonActivityResult()メソッドに移動する必要があります。

/*Here is where we come back after the Barcode Scanner is done*/
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
    if (requestCode == 0) {
        if (resultCode == RESULT_OK) {
            // contents contains whatever the code was
            String contents = intent.getStringExtra("SCAN_RESULT");

            // Format contains the type of code i.e. UPC, EAN, QRCode etc...
            String format = intent.getStringExtra("SCAN_RESULT_FORMAT");

            // Handle successful scan. 

        } else if (resultCode == RESULT_CANCELED) {
            // Handle cancel. If the user presses 'back' before a code is scanned.

        }
    }
}

また、進行状況ダイアログを非表示にするときは、ハンドラーを使用して作業スレッドからメインスレッドにメッセージを送信する必要があると思います。バックグラウンドスレッドからdismissを呼び出すことはできないと思います。それはただの予感ですが、テストされていません。

于 2012-07-19T13:57:15.357 に答える
0

OnActivityResultメソッドに入れて、それを確認します。

   @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        switch(requestCode) {
        case 1: 
        if (resultCode == RESULT_OK) {

            //put your stuff here....

            break;
        }
      }
    }
于 2012-07-19T13:55:03.527 に答える