2012-07-19 131 views
0

在我的应用程序中,我有扫描二维码的扫描按钮。代码是这样的:如何在第一个活动完成后才开始线程?

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()的信息;我怎样才能控制它只有在用户成功扫描代码后才能执行?

在此先感谢。

回答

0

把它放在OnActivityResult方法,ovveride它。

@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; 
     } 
     } 
    } 
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. 

     } 
    } 
} 

此外我认为你将不得不使用一个处理程序从工作线程发送消息给主线程的时候,是时候隐藏自己的进度对话框。我不认为它会让你从后台线程中调用它。这只是一个预感,没有经过测试。

相关问题