在Android中,如果想要啟動一個activity,可以用startActivity,或者是startActivityForResult(intent, GET_CODE)
如果是想要得到新的activity回傳的數據的話,必須使用第二個方法startActivityForResult(intent, GET_CODE);
並且在原來的activity中覆寫onActivityResult(int requestCode, int resultCode,Intent data)來對獲取的數據進行處理
例如在原來的activity中有如下的代碼對接受到的數據進行處理
- /**
- * 該方法是回調方法,當startActivityForResult啟動的activity結束後
- *
- * @param requestCode 傳遞給startActivity()的請求碼
- * @param resultCode 從啟動的activity中,在setResult()設置的一個結果碼,一般用來標識處理的結果
- * @param data 用來接受傳遞過來的數據
- */
- @Override
- protected void onActivityResult(int requestCode, int resultCode,
- Intent data) {
- if (requestCode == GET_CODE) {
- Editable text = (Editable)mResults.getText();
- if (resultCode == RESULT_CANCELED) {
- text.append("(cancelled)");
- // Our protocol with the sending activity is that it will send
- // text in 'data' as its result.
- } else {
- text.append("(okay ");
- text.append(Integer.toString(resultCode));
- text.append(") ");
- if (data != null) {
- text.append(data.getAction());
- }
- }
- text.append("\n");
- }
- }
在開啟新的activity的時候,有下面的程序
- //開啟一個activity,並且想得到返回數據. 會連同GET_CODE一起返回
- Intent intent = new Intent(ReceiveResult.this, SendResult.class);
- startActivityForResult(intent, GET_CODE);
在新的activity中有如下的程序
- setResult(RESULT_OK, (new Intent()).setAction("Corky!"));
- finish();