Android(安卓)之数据的传递与传回
16lz
2021-01-25
实现如图案例
第一个界面:(传值给第二个界面)
第二个界面:(接收来自第一个界面的值,并传回一个值给第一个界面)
第一个界面(接收到来自第二个界面的值)
第一个界面的布局如下:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:orientation="vertical" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="8dp" tools:context=".OneToTwoActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="提交给第二个界面的值"/> <EditText android:id="@+id/ed_1_2" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1"/> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="来自第二个界面的值:"/> <TextView android:id="@+id/tv_2_1" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1"/> </LinearLayout> <Button android:id="@+id/btn_submit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="提交"/></LinearLayout>
第二个界面的布局如下:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="8dp" tools:context=".TwoToOneActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="来自第一个界面的值:" /> <TextView android:id="@+id/tv_1_2" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="提交给第一个界面的值" /> <EditText android:id="@+id/ed_2_1" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" /> </LinearLayout> <Button android:id="@+id/btn_back" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="返回" /></LinearLayout>
在第一个Activity的按钮的点击事件中设置如下代码,其主要作用是实现跳转并传值给第二个Activity:
btn_submit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { intent = new Intent(this,TwoActivity.class);//从输入框中拿到的值String data1=ed_1_2.getText()+"";intent.putExtra("data1",data1);//第二个参数是请求码,请求码只需要是int类型的就可以startActivityForResult(intent,100); } });
除此之外,为了能接收到第二个Activity传回来的值,在第一个Activity中还必须重写onActivityResult()方法,代码如下:
//接收第二个页面返回的结果并显示 @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent intent) { super.onActivityResult(requestCode, resultCode, intent); //1.判断请求码和结果码,请求码和结果码必须与我们定义的一致 if (requestCode == 100 && resultCode == 200) { //拿第二个界面传回的值 String data2 = intent.getStringExtra("data2"); //赋值 tv_2_1.setText(data2); } }
在第二个Activity里,先拿到Intent并给TextView赋值
Intent intent=getIntent();tv_1_2.setText(intent.getStringExtra("data1"));
最后只需在按钮的点击事件中传值跳转即可
btn_back.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String data2=ed_2_1.getText()+""; intent.putExtra("data2",data2); setResult(200,intent); //结束当前页面回到上一界面 finish(); } });
更多相关文章
- Android之——激活应用程序的详情界面
- Android四大布局及属性
- Android多分辨率适配巧妙方法
- Android学习之界面篇(五)animateLayoutChanges
- Android周学习Step By Step(3)--应用工程文件组成
- android实现仿QQ登陆界面的多账号保存
- Android(安卓)轻松实现仿QQ消息下拉刷新
- Android仿IOS上拉下拉弹性效果的实例代码
- android Gallery的学习心得