在一般情况下,我们跳转页面都是使用startActivity
,而传递数据则是使用intent
数据包,但是会存在一些情况,我们需要在返回前一个Activity
的时候进行页面刷新,使得更新的数据能够同步显示到页面上。
比如,当用户信息发生更改时,我们在保存新数据后,要求返回到个人主页时页面上的用户名等信息能够进行同步更新。
举个栗子——我们先从FirstActivity
跳转到SecondActivity
,在SecondActivity
中进行了一些数据更新,并且更新后的数据需要在FirstActivity
中显示出来;而这一过程,我们是通过startActivityForResult
实现的。
FirstActivity中
以下代码可以放在onCreate
方法中
userName=(TextView).findViewById(R.id.userName);//需要更新的数据
button=(Button).findViewById(R.id.button);//点击该button则跳转至第二个界面
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v){
Intent intent=new Intent(FirstActivity.this,SecondActivity);
//第二个参数是requestCode,可以自己设置一个唯一的requestCode
startActivityForResult(intent,1);
}
}
在FirstActivity
中添加方法onActivityResult(int requestCode, int resultCode, Intent data)
,当SecondActivity
返回数据时,会相应该方法,并完成相应的刷新数据操作。
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case 1:{
//刷新页面,获取更新个人资料后的内容
if(resultCode==1){//resultCode需要与SecondActivity中的resultCode一致
//获取返回数据,获取用户名
userName=data.getStringExtra("userName");
//更新FirstActivity页面上显示的用户名
userName.setText(userName);
}
break;
}
//……
default:
break;
}
}
这个时候,第一个Activity的代码就基本完成啦~接下来看第二个Activity的代码
SecondActivity中
在第一个Activity中我们使用到了startActivityForResult
方法,在第二个Activity中就需要相应的使用setResult
方法,从而返回数据到第一个Activity中
edit_name=(EditText)findViewById(R.id.edit_name);
save=(Button).findViewById(R.id.save);//保存信息按钮
userName=edit_name.getText().toString();//获取输入的用户名
save.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//……将数据库更新
Intent intent = new Intent(SecondActivity.this,FirstActivity.class);
intent.putExtra("userName", userName);
setResult(1, intent);// 设置resultCode,记住一定要大于等于0噢!!!返回到FirstActivity
finish();//务必要结束第二个Activity
}
});
到这里,我们就可以实现在返回上一个Activity时刷新数据的功能啦~
第一次写文,可能会有些小错误,欢迎大家纠错交流噢!