要完成的效果如下:
在页面一输入一个值传递到页面二,然后页面二可以传回一个值到页面一。
首先,页面一传递的代码:
public class MainActivity extends AppCompatActivity {
EditText data; #获取输入值
Button btn; #获取按钮
TextView tt; #获取显示框
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
# 获取对应控件
data = findViewById(R.id.editText);
btn = findViewById(R.id.button);
tt = findViewById(R.id.textView2);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
# 关键代码
# 创建 intent ,并指明传递方向
Intent intent = new Intent(MainActivity.this,seconActivity.class);
# 将需要传递的内容放到 intent 中
intent.putExtra("data1",data.getText().toString());
# 使用 startActivityForResult 传递与召回,并输入传回码
startActivityForResult(intent,0x01);
}
});
然后,页面二接收与传递的代码:
public class seconActivity extends AppCompatActivity {
TextView data1; # 获取显示框
EditText data2; # 获取传递的值
Button btn; # 按钮
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_secon);
data1 = findViewById(R.id.textView2);
data2 = findViewById(R.id.editText3);
btn = findViewById(R.id.button3);
# 关键部分
# 声明 final 变量
final Intent intent = getIntent();
String dd = intent.getStringExtra("data1");
# 设置显示内容
data1.setText(dd);
# 设置传回信息
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
# 关键部分
intent.putExtra("data2", data2.getText().toString());
setResult(0x02,intent);
finish();
}
});
}
最后,页面一接收信息
# 需要在前一个方法外面重写 onActivityResult 方法
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
# 当请求码和结果码正确时,就可以接收data里的值
if((requestCode==0x01)&&(resultCode==0x02)){
String result = data.getStringExtra("data2");
tt.setText(result);
}
}