2012-08-09 2 views
13

Ich benutze Support-Paket v4.Kann Fragment nicht nach Tag finden

mFragmentManager = getSupportFragmentManager(); 

FragmentTransaction ft = mFragmentManager.beginTransaction(); 
ft.add(R.id.fragContainer1, new ModelListFragment(), FRAG_MODEL_LIST); 
ft.add(R.id.fragContainer2, new TrimListFragment(), FRAG_TRIM_LIST); 
ft.commit(); 

Fragment fragment = mFragmentManager.findFragmentByTag(
      MainActivity.FRAG_MODEL_LIST); 
Log.d("MY", "found fragment: " + (fragment != null)); 

Gibt immer "gefundenes Fragment: false" zurück. Mir fehlt etwas wirklich Offensichtliches, was ist es?

Antwort

15

Wie Sie in doc sehen:

Die begehen geschieht nicht sofort; Es wird als Arbeit auf dem Hauptthread geplant werden, um das nächste Mal fertig zu sein, wenn der Thread fertig ist.

Das ist der Grund, warum Sie Ihr Fragment nicht direkt nach commit() sehen.

+14

Und wenn Sie _really_ möchten, dass eine Transaktion angewendet werden soll, verwenden Sie [executePendingTransactions] (http://developer.android.com/reference/android/app/FragmentManager.html#executePendingTransactions()) –