2012-06-10 29 views
0

我試圖通過使用下面的代碼斑馬線拉從一個QR碼的數據(從教程基本上copypasted,其名稱更改爲保護無辜者):斑馬線onActivityResults不點火

  //Check for Barcode scanner, if not found put up an alert that allows user to install it. 
      PackageManager pm = getPackageManager(); 
      try { 
       ApplicationInfo appInfo = pm.getApplicationInfo("com.google.zxing.client.android", 0); 
       Intent intent = new Intent(
       "com.google.zxing.client.android.SCAN"); 
       intent.putExtra("SCAN_MODE", "QR_CODE_MODE");//for Qr code, its "QR_CODE_MODE" instead of "PRODUCT_MODE" 
       intent.putExtra("SAVE_HISTORY", false);//this stops saving ur barcode in barcode scanner app's history 
       startActivityForResult(intent, 0); 
      } catch (NameNotFoundException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
       new AlertDialog.Builder(BitcoinAddressUtilityActivity.this) 
        .setTitle("WARNING:") 
        .setMessage("You don't have Barcode Scanner installed. Please install it.") 
        .setCancelable(false) 
        .setNeutralButton("Install it now", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int whichButton) {   
            Uri uri = Uri.parse("market://search?q=pname:com.google.zxing.client.android"); 
            startActivity(new Intent(Intent.ACTION_VIEW, uri)); 
          } 
        }) 
        .show(); 

      } 


     } 

     public void onActivityResult(int requestCode, int resultCode, Intent intent) { 
       if (requestCode == 0) { 
        if (resultCode == RESULT_OK) { 
        String contents = intent.getStringExtra("SCAN_RESULT"); 
        String format = intent.getStringExtra("SCAN_RESULT_FORMAT"); 
        // Handle successful scan 
        EditText passphrase = (EditText) findViewById(R.id.txtPassphrase); 
        passphrase.setText(contents); 
        } else if (resultCode == RESULT_CANCELED) { 
        // Handle cancel 
        } 
       } 
      } 


    }); 

它只是執行細沒有錯誤,但絕不onActivityResults火災,我甚至收到了警告:

The method onActivityResult(int, int, Intent) from the type new View.OnClickListener(){} is never used locally

我完全承認,我是一個活動/意圖小白,所以如果有人想在的形式來回答我會很樂意接受 - 我不鞠躬我想要一個代碼修復,我想知道它爲什麼不起作用。

+0

也許一個錯字。我認爲還有一個@override notation缺失。 – rekire

回答

2

你已經在你的代碼

以下問題,你已經寫按鈕的onclick監聽器裏public void onActivityResult(int requestCode, int resultCode, Intent intent)方法。把它移到外面。

您的代碼段應該是這個樣子

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

      ---- 
      ---- 
} 

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

    if (requestCode == 0) { 
       if (resultCode == RESULT_OK) { 
       String contents = intent.getStringExtra("SCAN_RESULT"); 
       String format = intent.getStringExtra("SCAN_RESULT_FORMAT"); 
       // Handle successful scan 
       EditText passphrase = (EditText) findViewById(R.id.txtPassphrase); 
       passphrase.setText(contents); 
       } else if (resultCode == RESULT_CANCELED) { 
       // Handle cancel 
       } 
      } 

} 
+0

嵌套活動是否有效? –