1. 程式人生 > >Android中關於Activity之間傳值的問題(基礎問題)

Android中關於Activity之間傳值的問題(基礎問題)

也是Android中的一種基礎知識點吧,希望還是幫助理解吧,雖然簡單點了,獻給需要的人群,僅供參考。

關於兩個Activity之間傳值的問題,首先要搞清楚兩個activity那個是父類,那個是子類,通常父類是想要結果,而讓子類幫他處理,做完以後將結果回傳給父類,我的父類是ZxingActivity.java,而子類是SimpleCaptureActivity.java.我以掃描二維碼為例簡單說一下吧。請按照核心程式碼註釋的順序走,你會理解的。

首先看父類ZxingActivity.java中的核心程式碼。

public void onClick(View v) {
    switch (v.getId()) {
        //
開啟框掃描 case R.id.btn_switch: changeLight(); //1.父類包裝資料,給子類佈置任務,我需要什麼結果, Bundle bundle = new Bundle(); bundle.putString("data", "data"); Intent intent = new Intent(ZxingActivity.this, SimpleCaptureActivity.class); intent.putExtras(bundle); //2.當我給子類告訴完訊息之後,告訴子類我是需要返回結果的,因此要通過startActivityForResult()
方法,這時候請求就傳送給了子類 startActivityForResult(intent,001); break;

SimpleCaptureActivity.java中的核心程式碼,程式碼執行的順序請參照註釋的順序

@Override
protected void handleResult(final String resultString) {
    if (TextUtils.isEmpty(resultString)) {
        Toast.makeText(mActivity, io.github.xudaojie.qrcodelib.R.string.scan_failed
, Toast.LENGTH_SHORT).show(); restartPreview(); } else { if (mDialog == null) { mDialog = new AlertDialog.Builder(mActivity) .setMessage(resultString) .setPositiveButton("確定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //3.子類收到了父類的問題, Intent intent1 = getIntent(); // 4.開始回答父親的問題,將自己的答案給父類的intent intent1.putExtra("myresuly", resultString); //5.子類將自己的響應碼和設定的結果通過setResult(002,intent1)返回給父類, // 這時候父類就需要重寫onActivityResult()方法顯示結果了 setResult(002, intent1); finish(); } }) .create();

此時,子類完成了父類的任務,此時父類就要驗貨了,看看子類給的是不是他想要的結果了,因此又回到了父類ZxingActivity.java中,通過重寫onActivityResult()方法來驗收子類給的結果。

//6.處理子類帶回來的結果
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode==REQUEST_OK  && resultCode==RESPONSE_OK){
        Bundle bundle=data.getExtras();
String dataResult=bundle.getString("myresuly");
Log.i("res","拿到結果了嗎?"+dataResult);
mQRCodeResult.setText(bundle.getString("myresuly"));
}
}

這樣就搞定了兩個Activity之間的傳值問題,希望能夠幫到你哦,我是小蘿莉。