Home 主頁 Service 服務計畫 Android App 手機程式 Expertise 專業領域 Blog 博客 Download 下載 FAQ 網頁製作常見問題 Support 支援 Links 友情連結 Contact Us 聯絡我們

11 - 處理Activity Result

發佈: 08-09-2011

分類: Android 開發教學

第十一課:處理Activity Result

本文介紹如何讀取activity回傳的result。我們已經學會用startActivty和explicit intent去開始另一個activity,也知道可以用finish去結束一個activity,回到之前的activity。但是,在很多情況下,這也是不夠的。例如,在activity A中,你想讓用戶在另一個activity B打入自己的姓名,完成後在activity A中取回姓名。在這時候可用startActivityForResult,代替本來的startActivity。

使用startActivityForResult時要跟onActivityResult一起用。你可以在activity中override onActivityResult,用來讀取回傳的資料。當activity B以finish完成後,便會call back這個function。由於程序很可能開始多個activity,因此,在呼叫startActivityForResult時,可加入一個request code,在onActivityResult可以按不同的request code做反應。

以下是activity A所需要的coding:

protected static final int REQUEST_CODE = 0;
Intent i = new Intent();
i.setClass(ReturnResultDemoActivity.this, Selection.class);
startActivityForResult(i, REQUEST_CODE);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  // TODO Auto-generated method stub
  super.onActivityResult(requestCode, resultCode, data);

  switch (requestCode)
  {
    case REQUEST_CODE:
      if (resultCode==RESULT_OK)
      {
        String input  = data.getStringExtra("input");
        Toast.makeText(this, input, Toast.LENGTH_SHORT).show();
      }
      break;
  }
}

以下是activity B回傳所需要的coding:

String input = txtInput.getText().toString();

Intent i = new Intent();
i.putExtra("input", input);
setResult(RESULT_OK, i);

finish();

由此看來,我們也只是用intent傳資料,按startActivtyForResult中的request code,在onActivityResult中解讀intent便可。

Download: ReturnResultDemo

訪客: Copyright ©2011 KF Software House 版權所有 | 網站地圖