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

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

作者: 手残党 | 来源:发表于2020-10-11 21:43 被阅读0次

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

    相关文章

      网友评论

          本文标题:如何在返回上一个Activity时刷新页面数据

          本文链接:https://www.haomeiwen.com/subject/tbxypktx.html