首先用一张图来展示:
- 页面A携带参数到页面B
a、创建两个布局文件和两个对应的activity
b、拿到页面A的输入文本框
c、添加发表说说的事件,获取intent对象,将需要携带的数据封装进intent对象,然后跳转到页面B
d、在页面b通过getintent方法获取intent对象,通过intent对象获取传递过来的值。
e、同理拿到页面B的输入框
f、添加确定的事件,获取intent对象(携带参数),将需要携带的数据封装进intent对象,然后跳转到页面A
缺陷:当页面B跳转回页面A的时候,先前携带的参数会丢失。
2 页面A携带参数带有目的性跳转到页面B,为了从页面B拿数据回页面A
a、创建两个布局文件和两个对应的activity
b、拿到页面A的输入文本框
c、添加发表说说的事件,获取intent对象,将需要携带的数据封装进intent对象,然后带目的跳转到页面B
d、在页面b通过getintent方法获取intent对象,通过intent对象获取传递过来的值。
e、同理拿到页面B的输入框
f、添加确定的事件,获取intent对象(不携带参数),将需要携带的数据封装进intent对象,设置结果,干掉自己,将之前 的activity暴露出来。
g、重写onActivityResult方法处理返回的数据。
下面请看代码
第一个Activity页面
<?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"
tools:context=".MainActivity">
<EditText
android:layout_width="match_parent"
android:hint="发表人:"
android:id="@+id/et_main_uname"
android:layout_height="wrap_content" />
<TextView
android:layout_width="match_parent"
android:lines="10"
android:id="@+id/tv_main_conter"
android:layout_height="wrap_content" />
<Button
android:layout_width="match_parent"
android:text="我要发表说说"
android:id="@+id/bt1_main_show"
android:onClick="show"
android:layout_height="wrap_content" />
</LinearLayout>
package com.example.myapplication;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private EditText et_main_uname;
private TextView tv_main_conter;
private Button bt1_main_show;
//在Activity创建时就调用
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//初始化控件
setContentView(R.layout.activity_main);
et_main_uname = findViewById(R.id.et_main_uname);
tv_main_conter = findViewById(R.id.tv_main_conter);
}
/**
* 我要发表说说按钮
* @param view
*/
public void show(View view) {
//意图
Intent intent = new Intent(this,Main2Activity.class);
String uname = et_main_uname.getText().toString();
intent.putExtra("uname",uname);
//去某一个页面拿值得时候 再回到本页面时用
startActivityForResult(intent,0x100);
}
/**
* 接收传过来的参数 回调
* @param requestCode
* @param resultCode
* @param data
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
tv_main_conter.setText(data.getStringExtra("s"));
}
}
第二个Activity页面
<?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"
tools:context=".Main2Activity">
<TextView
android:layout_width="match_parent"
android:id="@+id/tv2_main_uname"
android:layout_height="wrap_content" />
<EditText
android:layout_width="match_parent"
android:lines="10"
android:hint="发表说说"
android:id="@+id/et2_main_conter"
android:layout_height="wrap_content" />
<Button
android:layout_width="match_parent"
android:id="@+id/bt2_main_ok"
android:text="确定"
android:onClick="ok"
android:layout_height="wrap_content" />
</LinearLayout>
package com.example.myapplication;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class Main2Activity extends AppCompatActivity {
private EditText et2_main_conter;
private TextView tv2_main_uname;
private Button bt2_main_ok;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
//初始化控件
et2_main_conter = findViewById(R.id.et2_main_conter);
tv2_main_uname = findViewById(R.id.tv2_main_uname);
bt2_main_ok = findViewById(R.id.bt2_main_ok);
String uname = getIntent().getStringExtra("uname");
tv2_main_uname.setText(uname);
}
/**
* 确定发表说说按钮
* @param view
*/
public void ok(View view) {
String s = et2_main_conter.getText().toString();
Intent Intent = new Intent(this,MainActivity.class);
Intent.putExtra("s",s);
//设置返回码
setResult(0x200,Intent);
//刷新
finish();
}
}
接下来是结果演示
1):第一个页面点我呀发表说说跳转到第二个页面 顺便把发表人的名字带过去
2):第二个页面 把第一个页面的值带过来 你可在编辑框内输入内容 当你点确定时 又跳到第一个页面去 且把值页带过去
3): 发表成功之后 跳转到第一个页面 且把发表的内容也带了过来
哈哈哈 希望有用