When I call findFragmentById()
with the id of my fragment, it returns null
.
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <fragment android:name="com.madduck.test.app.fragment.MainFragment" android:id="@+id/main_fragment" android:layout_width="match_parent" android:layout_height="match_parent" /> <fragment android:name="com.madduck.test.app.fragment.LoginFragment" android:id="@+id/login_fragment" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout>
MainActivity.java
private static final int LOGIN = 0; private static final int MAIN = 1; private static final int FRAGMENT_COUNT = MAIN +1; private Fragment[] fragments = new Fragment[FRAGMENT_COUNT] protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); FragmentManager fm = getSupportFragmentManager(); fragments[LOGIN] = fm.findFragmentById(R.id.login_fragment); fragments[MAIN] = fm.findFragmentById(R.id.main_fragment); FragmentTransaction transaction = fm.beginTransaction(); for (Fragment f : fragments) { if (f != null) transaction.hide(f); else Log.e(TAG, "???"); } transaction.commit(); }
The thing is that when I call fm.findFragmentById(R.id.login_fragment);
I get a null
but when I call fm.findFragmentById(R.id.main_fragment);
I get the fragment.
The answer Kar0t is perfectly fine but this may help somebody. On my case I had a fragment inside of a fragment and I was getting the wrong FragmentManager. I just had to call:
getChildFragmentManager()
and then just find the Fragment as usual:
fm.findFragmentById(R.id.fragment)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With