如果从菜单调用活动,如何使用onActivityResult(..)

Mar*_*zzi 8 android menu barcode android-intent android-activity

这是我的问题:

class main extends menuActivity{
  //
  ..
  //
  public void onActivityResult(int requestCode, int resultCode, Intent data) {
     if (resultCode == 0) 
        camera_barcode = INTENT.getStringExtra("SCAN_RESULT");
     }
  }
}
Run Code Online (Sandbox Code Playgroud)

INTENT在menuActivity类中创建:

public class menuActivity extends Activity {

    public INTENT;
@Override
public boolean onCreateOptionsMenu(Menu menu) {

}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

       //
       INTENT = new Intent("com.google.zxing.client.android.SCAN");
       INTENT.putExtra("SCAN_MODE", "QR_CODE_MODE");
       startActivityForResult(INTENT, 0);
       //
    }
} 
Run Code Online (Sandbox Code Playgroud)

问题是String camera_barcode为null,无法理解原因.

问:如果不是QR_CODE_MODE,我想扫描1d条形码?R:cameraScan.putExtra("SCAN_MODE","PRODUCT_MODE");

谢谢!!

Nik*_*ski 17

完成您为此结果开始的活动

  Bundle b = new Bundle();
  b.putString(key, value);
  Intent i = getIntent(); //gets the intent that called this intent
  i.putExtras(b);
  setResult(Activity.RESULT_OK, i);
  finish();
Run Code Online (Sandbox Code Playgroud)

  • @Nikola Despotoski,你以错误的方式理解文档.它说请求代码是非负的,而不是结果代码.因此,对于`setResult()`使用`Activity.RESULT_OK`是完全没问题的.但是如果你调用`startActivityForResult(intent,-1)`,那么就不会调用`onActivityResult()`. (4认同)
  • Activity.RESULT_OK = -1:D回想一下,我说每个正整数都会调用oAR():D (2认同)