Android Activity值传递
来源:互联网 发布:赵丽蓉老师知乎 编辑:程序博客网 时间:2024/06/01 22:38
1,有些功能实现需要我们在一个页面提交任务,然后在另一个页面来确认结果并把结果返回给前一个页面,比如淘宝的支付确认,这就要用到android的Activity值传递功能。
2,下面通过一个实例来讲解Activity值传递,在第一个页面中输入两个加数,然后传递给第二的页面,第二个页面输入计算结果后把值再传递给第一个页面,下面是最终的实现效果:
a)在第一个页面中输入两个加数:
b)点击“计算”后跳转到第二个页面,并把算式“3+5=”传递过去:
c)在第二个页面输入结果,点击“提交”后,把结果值“8”传给第一个页面:
3,下面是实现这个案例的具体代码,首先为两个页面设置两个布局文件:
a)第一个页面的布局文件,用来输入加法算式:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="30dp" android:orientation="horizontal"> <EditText android:id="@+id/editText1" android:layout_height="wrap_content" android:layout_width="80dp" android:phoneNumber="true"/> <TextView android:id="@+id/tv1" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text=" + " android:textSize="30sp"/> <EditText android:id="@+id/editText2" android:layout_height="wrap_content" android:layout_width="80dp" android:phoneNumber="true"/> <TextView android:id="@+id/tv2" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text=" = " android:textSize="30sp"/> <EditText android:id="@+id/editText3" android:layout_height="wrap_content" android:layout_width="80dp"/> </LinearLayout> <Button android:id="@+id/but" android:layout_width="100dp" android:layout_height="wrap_content" android:layout_marginTop="30dp" android:layout_gravity="center" android:text="计 算" android:textSize="20sp"/> </LinearLayout>
b)第二个页面的布局文件,用来输入计算结果:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="30dp" android:orientation="horizontal"> <TextView android:id="@+id/text" android:layout_height="wrap_content" android:layout_width="100dp" android:text="TextView" android:textSize="20sp"/><EditText android:id="@+id/edit" android:layout_height="wrap_content" android:layout_width="180dp" android:layout_marginLeft="10dp" android:phoneNumber="true"/></LinearLayout><Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="提 交" android:textSize="20sp" android:layout_gravity="center" android:layout_marginTop="30dp"/>"</LinearLayout>
4,实现第一个页面的MainActivity,主要讲解看注释:
public class MainActivity extends Activity {private EditText editText1,editText2,editText3;private Button button;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.main);//初始化控件editText1=(EditText) findViewById(R.id.editText1);editText2=(EditText) findViewById(R.id.editText2);editText3=(EditText) findViewById(R.id.editText3);button=(Button) findViewById(R.id.but);//对按钮设置监听事件button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubIntent intent=new Intent(MainActivity.this,SecondActivity.class);//第一个EditText中输入的值String x=editText1.getText().toString().trim();//第二个EditText中输入的值String y=editText2.getText().toString().trim();//把“x+y=”封装到intent中,待传给下一个Activityintent.putExtra("message", x+" + "+y+" = ");/** 通过startActivityForResult方法启动下一个Activity* 第二个参数为请求码(requestCode),这里设为1000*/startActivityForResult(intent, 1000);}});}/** 通过onActivityResult方法来接收回传过来的数据* 第一个参数为请求码(requestCode)* 第二个参数为结果码(resultCode)* 第三个参数为回传过来的数据(data)*/@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);//通过比较请求码和结果码来判断是否接收回传的数据if (requestCode==1000&&resultCode==1001) {String result_value=data.getStringExtra("result");//把回传过来的数据显示在editText3上editText3.setText(result_value);}} }
5,实现第二个页面的SecondActivity:
public class SecondActivity extends Activity{private TextView textView;private Button button;private EditText editText;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.second);//初始化控件button=(Button) findViewById(R.id.button);editText=(EditText) findViewById(R.id.edit);textView=(TextView) findViewById(R.id.text);//获得MainActivity传递过来的值,并显示在textView上Intent intent=getIntent();String message=intent.getStringExtra("message");textView.setText(message);//对按钮设置监听事件button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View arg0) {// 通过editText获取到输入的计算结果String value=editText.getText().toString().trim();//通过Intent把计算结果(value)回传给MainActivityIntent intent=new Intent();intent.putExtra("result", value);//第一个参数为结果码(resultCode),第二个参数为回传的数据(data)setResult(1001, intent);//结束Activity生命周期finish();} }); }}
6,不要忘记在清单文件中声明SecondActivity:
<activity android:name="com.example.activity3.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.example.activity3.SecondActivity"> </activity>
1 0
- Android -- Activity值传递
- Android Activity值传递
- Android Activity之间的值传递
- Android的Activity之间的值传递
- Android多个activity值传递
- android activity间传递内容值
- android activity传递对象
- android开发fragment、Activity与Activity之间的值传递
- 【Android】Activity之间传递信息
- android activity之间传递参数
- Android Activity 之间传递对象
- android Activity之间传递对象
- Android Activity传递自定义对象
- android activity之间传递参数
- android activity之间参数传递
- Android activity之间传递数据
- android activity之间传递数据
- Android Activity传递简单数据
- 关于iOS9以后,shareSDK弹框里字体是英文和分享失败的情况
- ADRMS (企业版权管理服务)简介
- 五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT) – 整理
- SMPP协议解析
- HBase修改压缩格式及Snappy压缩实测分享
- Android Activity值传递
- java.lang.SecurityException: Unable to find app for caller android.app.ActivityThread$
- android:descendantFocusability用法简析
- 111
- mfc调色板和区域
- YUV格式详细解释与FFMPEG的关系
- java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Double 项目中类型转换
- ibatis与spring的整合
- K60_CAN