实现如图案例
第一个界面:(传值给第二个界面)
第二个界面:(接收来自第一个界面的值,并传回一个值给第一个界面)
第一个界面(接收到来自第二个界面的值)
第一个界面的布局如下:
<?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();
}
});