Android的Activity之间的值传递

来源:互联网 发布:移动怎么接网络电视 编辑:程序博客网 时间:2024/04/30 12:38
Activity 接收/传递返回值: 
符号说明:A 代表请求的Activity  B 代表带有返回值的Activity(被请求的) 

A 中:不同请求必须使用不同的请求码,因为每次请求的请求码都是唯一的,且>=0; 
使用startActivityForResult();方法启动实现跳转; 

B中:setResult(1, intent); 设置返回值,并返回一个Intent对象; 
finish();  方法实现自动结束 

启动,请求的Activity:
 
Java代码  收藏代码
  1. package com.example.lesson4;  
  2.   
  3. import android.app.Activity;  
  4. import android.content.Intent;  
  5. import android.os.Bundle;  
  6. import android.view.View;  
  7. import android.view.View.OnClickListener;  
  8. import android.widget.Button;  
  9. import android.widget.EditText;  
  10.   
  11. /* 请求Activity */  
  12. public class MainActivity extends Activity {  
  13.   
  14.     private Button btnOne=null;  
  15.     private Button btnTwo = null;  
  16.     private EditText editText1 = null,editText2 = null;  
  17.       
  18.     /* 请求码:每次的请求码都是唯一的,但:>=0 */  
  19.     private int requestCode ;   
  20.     private Intent intent;  
  21.     protected void onCreate(Bundle savedInstanceState) {  
  22.         super.onCreate(savedInstanceState);  
  23.         setContentView(R.layout.main);  
  24.           
  25.         /* 获取实例对象 */  
  26.         btnOne = (Button) findViewById(R.id.btnOne);  
  27.         btnTwo = (Button) findViewById(R.id.btnTwo);  
  28.         editText1 = (EditText) findViewById(R.id.editText1);  
  29.         editText2 = (EditText) findViewById(R.id.editText2);  
  30.           
  31.         /* 注册事件 */  
  32.         btnOne.setOnClickListener(listener);  
  33.         btnTwo.setOnClickListener(listener);  
  34.           
  35.         /* new 一个Intent对象,并指明跳转的方向   */  
  36.         intent = new Intent(MainActivity.this,BackValueActivity.class);  
  37.     }  
  38.       
  39.     /* 编写OnClickListener 按钮点击事件 , 对Button进行监控 */  
  40.     OnClickListener listener = new OnClickListener() {  
  41.   
  42.         /* View v 代表的是当前触发事件的按钮 */  
  43.         public void onClick(View v) {  
  44.             // TODO Auto-generated method stub  
  45.             int id = v.getId();  
  46.             switch(id){  
  47.             case R.id.btnOne:  
  48.                 /*  设置请求码 , */    
  49.                 requestCode = 0;  
  50.                   
  51.                 /* 该方法传递当前Intent对象和请求码,能让B返回数据 */  
  52.                 startActivityForResult(intent, requestCode);  
  53.                   
  54.                 break;  
  55.             case R.id.btnTwo:  
  56.                 requestCode = 1;  
  57.                 startActivityForResult(intent, requestCode);  
  58.                 break;  
  59.             }  
  60.         }  
  61.     };  
  62.       
  63.     /* 重写onActivityResult,对传递过来的数据进行处理 ; 参数1:请求码 ;  参数2:返回码 ;   参数3:返回的Intent对象(带有数据) */  
  64.     protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
  65.         // TODO Auto-generated method stub  
  66.         super.onActivityResult(requestCode, resultCode, data);  
  67.         switch(requestCode){  
  68.         case 0:  
  69.             /* 将获得的数据显示在EditText1 上 */  
  70.             String a = data.getStringExtra("key");  
  71.             editText1.setText(a);  
  72.             break;  
  73.         case 1:  
  74.             String b = data.getStringExtra("key");  
  75.             editText2.setText(b);  
  76.             break;  
  77.         }  
  78.     }  
  79.           
  80.     
  81. }  



被请求的Activity: 
Java代码  收藏代码
  1. package com.example.lesson4;  
  2.   
  3. import android.app.Activity;  
  4. import android.content.Intent;  
  5. import android.os.Bundle;  
  6.   
  7. /* 该Activity用于直接处理用户的请求,放回对应的数据 */  
  8. public class BackValueActivity extends Activity {  
  9.   
  10.     protected void onCreate(Bundle savedInstanceState) {  
  11.         // TODO Auto-generated method stub  
  12.         super.onCreate(savedInstanceState);  
  13.           
  14.         /* new 一个Intent对象 , 用户Activity之间的交互以及数据的传递 */  
  15.         Intent intent = new Intent();  
  16.           
  17.         /* 附加数据,随即出四组中奖号码 */  
  18.         intent.putExtra("key", getRandomNumber());  
  19.           
  20.         /* 设置返回值,参数1:返回码 ; 参数二:返回Intent的 对象,传递数据 */  
  21.         setResult(1, intent);  
  22.           
  23.         /*  自动结束Activity */  
  24.         finish();  
  25.           
  26.     }  
  27.       
  28.     /* 获取随机号码 method */  
  29.     protected static  String getRandomNumber(){  
  30.         String num = "";  
  31.         int a = (int)((Math.random()*99)+10);  
  32.         int b = (int)((Math.random()*99)+10);  
  33.         num = a+"   "+b;  
  34.         return num;  
  35.     }  
  36. }  
0 0