界面间的数据传输
1.数据随着页面跳转过程传输到第二个页面
1.1数据从第一个页面传到第二个页面
我们用bundle将数据封装,通过Intenr,调用它的putExtra()方法传输
我们这里使用的跳转方法是之前博客讲的第一种方法
代码如下
public void tosecond(View v){
Intent intent = new Intent();
EditText name_e = (EditText)findViewById(R.id.editText1);
EditText password_e = (EditText)findViewById(R.id.editText2);
String name = name_e.getText().toString();
String password = password_e.getText().toString();
//使用bundle将姓名和密码进行封装
Bundle bundle = new Bundle();
bundle.putString("name", name);
bundle.putString("password", password);
//利用Intent进行传输
intent.putExtras(bundle);
intent.setClass(MainActivity.this, Second.class);
startActivity(intent);
}
当然如果只想传输单个数据可以不用bundle,直接使用Intent的putExtra(“name”,name),进行传输。
1.2第二个页面接收第一个页面传世的数据
在Oncreate函数中添加下列代码
Bundle bundle = intent.getExtras();
String name = bundle.getString("name");
String password = bundle.getString("password");
当然这些代码也可以在绑定函数中实现
2.数据从第二个页面回传到之前的界面
实现这个功能主要有两步
第一步
在第二个界面的java文件中的自定义一个函数添加下列代码
Intent intent = new Intent();
intent.putExtra("reuslt", "你已经登陆");
setResult(2,intent);
finish();
我们利用setResult进行数据的回传,返回到第一个界面。
第二步
在第一个界面的java文件中将startActivity(intent)改成startActivityForResult(intent, 1)
然后定义一个函数protected void onActivityResult(int requestCode, int resultCode, Intent data)
代码如下
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1 && resultCode == 2) {
String result = data.getStringExtra("reuslt");
// Toast.makeText(getApplicationContext(), result, 2).show();
TextView textView = (TextView)findViewById(R.id.textView1);
textView.setText(result);
}
}
说明
关于这个函数的三个参数的来源
1.第一个是第一个页面跳转第二个界面的startActivityForResult(intent, 1)传输的第二个参数
2.第二个和第三个参数是第二个页面回传第一个页面的setResult(2,intent);的参数。
如果回传数据很多,可以利用setResult回传不同的参数进行区分。
效果如下
1.实现第一个界面的跳转以及数据的传递
2.实现第二个界面的数据接收和回传数据
3.实现第一个界面的接受数据