显示一个新的屏幕,在这个屏幕上输入一段话,然后再返回到原先的界面显示刚才输入的那句话。
注意:在第节中页面跳转中有一个MainActivity.this.startActivity(intent);这是无返回值的打开页面,如果想要得到有返回值的页面就要改为MainActivity.this.startActivityForResult(intent, 0);
已经可以调出新Activity了,我们看一下执行的结果
想要把输入的值返回到原来的那个页面,就一定要在“返回”按键中加入点什么代码,如下:
class myButtonOAReturnimplementsandroid.view.View.OnClickListener {
@Override
public void onClick(View v) {
String sEdit = sEditText.getText().toString();
SharedPreferences sp = getSharedPreferences("text", 0);
SharedPreferences.Editor editor = sp.edit();
editor.putString("text", sEdit);
if (editor.commit()) {
setResult(RESULT_OK);
}
finish();
}
}
这里的关键是SharedPreferences对象,这是在多个Activity(同一包中)共享数据的方式,本质上它就是一个可以在包的范围内进行数据共享的文件。
我们通过一个标签“text”获得了和文本相关的那个SharedPreferences对象(“text”仅仅是自己定义的一个标签),然后给它赋予一个“text”对象值为当前文本框中输入的文本。设置完成以后,设置当前Activity的执行结果为RESULT_OK,再关闭当前的Activity,剩下的事情就可以回到MainActivity这个主界面中去执行了。
MainActivity里面是不是应该有一个接收这个数据的代码呢?如下:
@Override
protected void onActivityResult(int requestCode,int resultCode, Intent data) {
if (requestCode == 0 && resultCode == Activity.RESULT_OK) {
SharedPreferences sp = getSharedPreferences("text", 0);
maedReveice.setText(sp.getString("text",null));
}
}
我们重写了onActivityResult方法。