Using onResume() to refresh activity

2019-01-26 11:04发布

I can't for the life of me figure out how to have an activity be refreshed after pressing the back button. I currently have activity A that fires an intent to goto B and while on act B if you press back I want to go back to act A but have it refresh itself. I can use this intent to refresh the activity currently:

Intent refresh = new Intent(this, Favorites.class);
    startActivity(refresh);
    this.finish();

But I can't figure out how to properly use the onResume() function to refresh my act A after going back to it.

3条回答
男人必须洒脱
2楼-- · 2019-01-26 11:47

use startActivityForResult(intent, requestCode); to start Activity B from Activity A

then in Activity A override onActivityResult(int requestCode, int resultCode, Intent data)

there you can refresh your Activity A

查看更多
可以哭但决不认输i
3楼-- · 2019-01-26 11:51

If you need a special behaviour of ActivityA when coming back from ActivityB, you should use startActivityForResult(Intent intent, int requestCode) instead of startActivity(Intent intent):

 startActivityForResult(new Intent(this, ActivityB.class), REQUEST_CODE); 

This way, you will be able to detect ActivityB's termination in ActivityA by overloading onActivityResult(int requestCode, int resultCode, Intent intent):

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
    super.onActivityResult(requestCode, resultCode, intent);

    if (requestCode == REQUEST_CODE) {
        doRefresh(); // your "refresh" code
    }
}

This works even if you terminate ActivityB by the press of the back button. The resultCode will be RESULT_CANCELLED by default in that case.

查看更多
迷人小祖宗
4楼-- · 2019-01-26 11:53

You need to place the code that updates the UI of your Activity in the onResume() method. Maybe you should post some more code or explain what exactly are you trying to update.

查看更多
登录 后发表回答