2012-07-19 132 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. 

     } 
    } 
} 

此外我認爲你將不得不使用一個處理程序從工作線程發送消息給主線程的時候,是時候隱藏自己的進度對話框。我不認爲它會讓你從後臺線程中調用它。這只是一個預感,沒有經過測試。

相關問題