如何在返回上一个Activity时刷新页面数据

在一般情况下,我们跳转页面都是使用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时刷新数据的功能啦~
第一次写文,可能会有些小错误,欢迎大家纠错交流噢!

推荐阅读更多精彩内容