0

In my case have two fragment first one FragmentA and second is FragmentB in FragmentA when click button call

activity.getSupportFragmentManager().beginTransaction().replace(R.id.frameLayoutGallery,myFragment).addToBackStack(null).commit();

then show FragmentB , after in the second Fragment (FragmentB) button click call

int backStackId = getFragmentManager().getBackStackEntryAt(0).getId();
getFragmentManager().popBackStack(backStackId,FragmentManager.POP_BACK_STACK_INCLUSIVE);

after that it will show FragmentA content but how to catch isShow FragmentA exactly ??

P Rane
  • 306
  • 1
  • 5
  • 16
  • Would you prefer to use a library? https://github.com/Trendyol/medusa or https://medium.com/@bherbst/managing-the-fragment-back-stack-373e87e4ff62 – Arda Kazancı Aug 20 '20 at 05:49

3 Answers3

1

use could use backstack listener in your case

public class MainActivity extends AppCompatActivity implements FragmentManager.OnBackStackChangedListener{

private FragmentManager fragmentManager;

@Override
protected void onPostCreate(@Nullable Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);
    fragmentManager = getSupportFragmentManager();
    fragmentManager.addOnBackStackChangedListener(this);}

@Override
public void onBackStackChanged() {
    try {
        Fragment tempFragment = 
               fragmentManager.findFragmentById(R.id.view_container);
        if (tempFragment instanceof FragmentA)
            ((FragmentA) tempFragment).callThisMethod();
        else if (tempFragment instanceof FragmentB)
            //do something
    } catch (Exception e) {
        e.printStackTrace();
    }
}}
gowtham6672
  • 999
  • 1
  • 10
  • 22
1

You can also use callback , see this URL : enter link description here

Dharman
  • 30,962
  • 25
  • 85
  • 135
0

If you want to do something exactly when the FragmentA is visible, you can override the onResume of the FragmentA

@Override
public void onResume() {
    super.onResume();
    doSomething();
}
Sharukh Mohammed
  • 365
  • 2
  • 16