Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

findFragmentById return null

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.

like image 809
simperreault Avatar asked Apr 29 '14 00:04

simperreault


Video Answer


1 Answers

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) 
like image 170
codeskraps Avatar answered Oct 03 '22 08:10

codeskraps