符号说明:A 代表请求的Activity B 代表带有返回值的Activity(被请求的)
A 中:不同请求必须使用不同的请求码,因为每次请求的请求码都是唯一的,且>=0;
使用startActivityForResult();方法启动实现跳转;
B中:setResult(1, intent); 设置返回值,并返回一个Intent对象;
finish(); 方法实现自动结束
启动,请求的Activity:
package com.example.lesson4; 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; /* 请求Activity */ public class MainActivity extends Activity { private Button btnOne=null; private Button btnTwo = null; private EditText editText1 = null,editText2 = null; /* 请求码:每次的请求码都是唯一的,但:>=0 */ private int requestCode ; private Intent intent; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); /* 获取实例对象 */ btnOne = (Button) findViewById(R.id.btnOne); btnTwo = (Button) findViewById(R.id.btnTwo); editText1 = (EditText) findViewById(R.id.editText1); editText2 = (EditText) findViewById(R.id.editText2); /* 注册事件 */ btnOne.setOnClickListener(listener); btnTwo.setOnClickListener(listener); /* new 一个Intent对象,并指明跳转的方向 */ intent = new Intent(MainActivity.this,BackValueActivity.class); } /* 编写OnClickListener 按钮点击事件 , 对Button进行监控 */ OnClickListener listener = new OnClickListener() { /* View v 代表的是当前触发事件的按钮 */ public void onClick(View v) { // TODO Auto-generated method stub int id = v.getId(); switch(id){ case R.id.btnOne: /* 设置请求码 , */ requestCode = 0; /* 该方法传递当前Intent对象和请求码,能让B返回数据 */ startActivityForResult(intent, requestCode); break; case R.id.btnTwo: requestCode = 1; startActivityForResult(intent, requestCode); break; } } }; /* 重写onActivityResult,对传递过来的数据进行处理 ; 参数1:请求码 ; 参数2:返回码 ; 参数3:返回的Intent对象(带有数据) */ protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); switch(requestCode){ case 0: /* 将获得的数据显示在EditText1 上 */ String a = data.getStringExtra("key"); editText1.setText(a); break; case 1: String b = data.getStringExtra("key"); editText2.setText(b); break; } } }
被请求的Activity:
package com.example.lesson4; import android.app.Activity; import android.content.Intent; import android.os.Bundle; /* 该Activity用于直接处理用户的请求,放回对应的数据 */ public class BackValueActivity extends Activity { protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); /* new 一个Intent对象 , 用户Activity之间的交互以及数据的传递 */ Intent intent = new Intent(); /* 附加数据,随即出四组中奖号码 */ intent.putExtra("key", getRandomNumber()); /* 设置返回值,参数1:返回码 ; 参数二:返回Intent的 对象,传递数据 */ setResult(1, intent); /* 自动结束Activity */ finish(); } /* 获取随机号码 method */ protected static String getRandomNumber(){ String num = ""; int a = (int)((Math.random()*99)+10); int b = (int)((Math.random()*99)+10); num = a+" "+b; return num; } }