有時候我們需要把A activity提交資料給B  activity處理,然後把結果返回給A

這種方式在很多種情況需要用到,比如我應用的程式需要有拍照上傳的功能。

一種解決方案是  我的應用程式 〉呼叫系統相機〉拍照〉關閉系統相機〉返回拍照後的照片到我的應用程式

啟動一個ForResult的意圖:

Intent intent = new Intent(MainAcitvity.this,
      RequestActivity.class);
    //傳送意圖示示為REQUSET=1
    startActivityForResult(intent, REQUSET);

B Activity處理資料:

Intent intent=new Intent();
    intent.putExtra(KEY_USER_ID, et01.getText().toString());
    intent.putExtra(KEY_USER_PASSWORD, et02.getText().toString());
setResult(RESULT_OK, intent);
 finish();

那麼startActivityForResult如何使用呢:

Java程式碼  
  1. ;
  2. @Override
  3. protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  4. // TODO Auto-generated method stub
  5. super.onActivityResult(requestCode, resultCode, data);
  6. //requestCode標示請求的標示   resultCode表示有資料
  7. if (requestCode == MainAcitvity.REQUSET && resultCode == RESULT_OK) {
  8. String str = "賬號"
  9. + data.getStringExtra(RequestActivity.KEY_USER_ID) + "\n"
  10. + "密碼"
  11. + data.getStringExtra(RequestActivity.KEY_USER_PASSWORD);
  12. tv01.setText(str);
  13. }
  14. Toast.makeText(
  15. this,
  16. "requestCode=" + requestCode + ":" + "resultCode=" + resultCode,
  17. Toast.LENGTH_LONG).show();
  18. }
  19. /** Called when the activity is first created. */
  20. @Override
  21. public void onCreate(Bundle savedInstanceState) {
  22. super.onCreate(savedInstanceState);
  23. setContentView(R.layout.main);
  24. btn01 = (Button) findViewById(R.id.btn01);
  25. tv01 = (TextView) findViewById(R.id.tv01);
  26. btn01.setOnClickListener(new OnClickListener() {
  27. @Override
  28. public void onClick(View v) {
  29. // TODO Auto-generated method stub
  30. Intent intent = new Intent(MainAcitvity.this,
  31. RequestActivity.class);
  32. //傳送意圖示示為REQUSET=1
  33. startActivityForResult(intent, REQUSET);
  34. }
  35. });
  36. }
  37. }
Java程式碼  
  1. import android.app.Activity;
  2. import android.content.Intent;
  3. import android.os.Bundle;
  4. import android.view.View;
  5. import android.view.View.OnClickListener;
  6. import android.widget.Button;
  7. import android.widget.EditText;
  8. public class RequestActivity extends Activity {
  9. private Button btn01;
  10. private EditText et01;
  11. private EditText et02;
  12. public static final String KEY_USER_ID="KEY_USER_ID";
  13. public static final String KEY_USER_PASSWORD="KEY_USER_PASSWORD";
  14. /** Called when the activity is first created. */
  15. @Override
  16. public void onCreate(Bundle savedInstanceState) {
  17. super.onCreate(savedInstanceState);
  18. setContentView(R.layout.request_activity);
  19. btn01=(Button)findViewById(R.id.btn01);
  20. et01=(EditText)findViewById(R.id.et01);
  21. et02=(EditText)findViewById(R.id.et02);
  22. btn01.setOnClickListener(new OnClickListener() {
  23. @Override
  24. public void onClick(View v) {
  25. // TODO Auto-generated method stub
  26. Intent intent=new Intent();
  27. intent.putExtra(KEY_USER_ID, et01.getText().toString());
  28. intent.putExtra(KEY_USER_PASSWORD, et02.getText().toString());
  29. setResult(RESULT_OK, intent);
  30. finish();
  31. }
  32. });
  33. }
  34. }