Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using onResume() to refresh activity

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.

like image 831
Nick Avatar asked Jul 27 '11 20:07

Nick


2 Answers

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.

like image 174
Shlublu Avatar answered Oct 24 '22 00:10

Shlublu


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

like image 3
Mohammad Ersan Avatar answered Oct 23 '22 23:10

Mohammad Ersan