findFragmentByTag() returns null after perform a FragmentTransaction using replace() method findFragmentByTag() returns null after perform a FragmentTransaction using replace() method android android

findFragmentByTag() returns null after perform a FragmentTransaction using replace() method


I've fixed it! I called getSupportFragmentManager().executePendingTransactions() after doing the transaction and it worked! After calling that method I can get the fragment using both findFragmentById() and findFragmentByTag() methods.


if you use setRetainInstance(true) than you can't use findFragmentByTag() in onCreate from the Activity. Do it at onResume

see the documentation: setRetainInstance


I'll start by apologising since I'm still very new myself...

I think the problem may be in the declaration of the fragmentTag static String not properly getting access from the class's instances, just change that line to:

private final static String FRAGMENT_TAG = "FRAGMENTB_TAG"; // using uppercase since it's a constant

Also, I would be more explicit when declaring instances, for example:

public void buttonListener(View v){    FragmentTransaction ft = getFragmentManager().beginTransaction();    ft.replace(R.id.right_container, new FragmentB(), FRAGMENT_TAG);    ft.commit();    FragmentB fragB = (FragmentB) getFragmentManager().findFragmentByTag(FRAGMENT_TAG);    fragB.testView();}

I hope you get this sorted, as I seen this question posted earlier and was surprised that it hadn't got any activity yet.

Also, here are a couple of links to the android documentation on replace:

Android Training - Replace

Android Reference - Replace