1. 程式人生 > >startActivityForResult的用法和demo

startActivityForResult的用法和demo

有時候我們需要把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. package com.cn.activityresult.demo;  
  2. import android.app.Activity;  
  3. import android.content.Intent;  
  4. import android.os.Bundle;  
  5. import android.view.View;  
  6. import android.view.View.OnClickListener;  
  7. import android.widget.Button;  
  8. import android.widget.TextView;  
  9. import android.widget.Toast;  
  10. public class MainAcitvity extends Activity {  
  11.     private Button btn01;  
  12.     private TextView tv01;  
  13.     public static final int REQUSET = 1;  
  14.     @Override  
  15.     protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
  16.         // TODO Auto-generated method stub  
  17.         super.onActivityResult(requestCode, resultCode, data);  
  18.         //requestCode標示請求的標示   resultCode表示有資料  
  19.         if (requestCode == MainAcitvity.REQUSET && resultCode == RESULT_OK) {  
  20.             String str = "賬號"  
  21.                     + data.getStringExtra(RequestActivity.KEY_USER_ID) + "\n"  
  22.                     + "密碼"  
  23.                     + data.getStringExtra(RequestActivity.KEY_USER_PASSWORD);  
  24.             tv01.setText(str);  
  25.         }  
  26.         Toast.makeText(  
  27.                 this,  
  28.                 "requestCode=" + requestCode + ":" + "resultCode=" + resultCode,  
  29.                 Toast.LENGTH_LONG).show();  
  30.     }  
  31.     /** Called when the activity is first created. */  
  32.     @Override  
  33.     public void onCreate(Bundle savedInstanceState) {  
  34.         super.onCreate(savedInstanceState);  
  35.         setContentView(R.layout.main);  
  36.         btn01 = (Button) findViewById(R.id.btn01);  
  37.         tv01 = (TextView) findViewById(R.id.tv01);  
  38.         btn01.setOnClickListener(new OnClickListener() {  
  39.             @Override  
  40.             public void onClick(View v) {  
  41.                 // TODO Auto-generated method stub  
  42.                 Intent intent = new Intent(MainAcitvity.this,  
  43.                         RequestActivity.class);  
  44.                 //傳送意圖示示為REQUSET=1  
  45.                 startActivityForResult(intent, REQUSET);  
  46.             }  
  47.         });  
  48.     }  
  49. }  
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. }