2016-04-10 21 views
0

Ich brauche Hilfe zu einem Problem, in meiner Android App, die ich arbeite, ich navigiere zwischen Fragment s die ganze Zeit. Ich verwende den Code, um zwischen s zu navigieren.Fragment wird geladen, wenn nicht Null - Android-Datei

newsFeedFragment fragment = new newsFeedFragment(); 
android.support.v4.app.FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
fragmentTransaction.replace(R.id.fragment_container, fragment); 
fragmentTransaction.addToBackStack(null); 
fragmentTransaction.commit(); 

Mit dem obigen Code, die Navigation zu den News-Feed-Fragmente Lasten von "onCreate". HI muss, dass, wenn das Fragment zuvor geladen wurde, sollte es die zuvor geladene Seite zeigen, die onCreate sollte übersprungen werden, aber die onResume nicht. Wenn jedoch die Fragment nicht geladen wurde, sollte die Fragment zum ersten Mal geladen werden.

Kann mir jemand helfen, dies zu erreichen?

Vielen Dank

+0

für Sie müssen für jedes Fragment eine ID festlegen, dann suchen Sie nach dem Fragment, wenn es vorhanden ist laden Sie es sonst erstellen Sie neu, dann laden Sie es. Wenn Sie Code möchten, kann ich einige geben. – dex

+0

Hallo dex, es wäre toll wenn du mir eine Probe zeigen könntest, ich bin ein bisschen neu in Android. – saner

Antwort

1

Sie können dies tun, indem TAG auf Ihre Fragmente hinzufügen. Wo immer Sie ein Fragment zu Ihrer Ansicht hinzuzufügen, tun dies wie folgt aus:

getSupportFragmentManager().beginTransaction().replace(R.id.something, new SomeFragment(),"SOMETAG").commit(); 

und wo immer Sie wollen prüfen, ob dieses Fragment schon zu verhindern, besteht das folgende Kontroll Nachladen es hinzufügen:

SomeFragment sf = (SomeFragment) getSupportFragmentManager().findFragmentByTag("SOMETAG"); 
if(sf != null) 
{ 
    //the condition when the fragment is already exists 
} 
else 
{ 
    //the condition when the fragment is not loaded 
} 
+0

Vielen Dank Pooya, in den if-Bedingungen wie soll ich das Fragment zurückholen, wenn es schon existiert, und wie, wenn es nicht tut? Gibt es einen Unterschied? Tut mir leid, dass ich zu viele Fragen gestellt habe. – saner