[转]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如何使用呢:
package com.cn.activityresult.demo; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; public class MainAcitvity extends Activity { private Button btn01; private TextView tv01; public static final int REQUSET = 1; @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); //requestCode标示请求的标示 resultCode表示有数据 if (requestCode == MainAcitvity.REQUSET && resultCode == RESULT_OK) { String str = "账号" + data.getStringExtra(RequestActivity.KEY_USER_ID) + "\n" + "密码" + data.getStringExtra(RequestActivity.KEY_USER_PASSWORD); tv01.setText(str); } Toast.makeText( this, "requestCode=" + requestCode + ":" + "resultCode=" + resultCode, Toast.LENGTH_LONG).show(); } /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); btn01 = (Button) findViewById(R.id.btn01); tv01 = (TextView) findViewById(R.id.tv01); btn01.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent = new Intent(MainAcitvity.this, RequestActivity.class); //发送意图标示为REQUSET=1 startActivityForResult(intent, REQUSET); } }); } }
import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; public class RequestActivity extends Activity { private Button btn01; private EditText et01; private EditText et02; public static final String KEY_USER_ID="KEY_USER_ID"; public static final String KEY_USER_PASSWORD="KEY_USER_PASSWORD"; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.request_activity); btn01=(Button)findViewById(R.id.btn01); et01=(EditText)findViewById(R.id.et01); et02=(EditText)findViewById(R.id.et02); btn01.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub 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(); //此处一定要调用finish() } }); } }