Meine App beginnt mit einem FragmentA. Ich möchte, dass FragmentA etwa 5 Sekunden lang angezeigt wird und dann ein weiteres FragmentB anzeigt, das FragmentA ersetzt.

Ich habe FragmentA angezeigt von:

  @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        FragmentA  frag = new FragmentA();
        FragmentManager fm = getSupportFragmentManager();       
        FragmentTransaction ft = fm.beginTransaction().add(R.id.fl,frag); 

        ft.commit();

Ich bin mir nicht sicher, was ich danach tun soll.

2
vin shaba 30 Dez. 2015 im 22:17

3 Antworten

Beste Antwort

Rufen Sie zunächst die

getSupportFragmentManager().beginTransaction()
            .replace(R.id.fl, new FragmentA())
            .commit();

Und danach fügen Sie Folgendes hinzu:

Handler handler = new Handler();
Runnable runnable = new Runnable() {
          @Override
          public void run() {
             //Second fragment after 5 seconds appears
             getSupportFragmentManager().beginTransaction()
                 .replace(R.id.fl, new FragmentB())
                 .commit();
          }
    };

handler.postDelayed(runnable, 5000);

Update: Entfernen Sie einfach die ausführbare Datei aus dem Handler, um zu verhindern, dass die ausführbare Datei ausgeführt wird, nachdem die Aktivität zerstört wurde.

@Override
   public void onDestroy () {
     handler.removeCallbacks(runnable);
     super.onDestroy();
}
5
Nilesh Singh 26 Dez. 2016 im 13:35

Wenn Sie nach einer Verzögerung Code ausführen müssen, verwenden Sie Handler. Beispiel:

final Handler handler = new Handler();

handler.postDelayed(new Runnable() {
      @Override
      public void run() {
        hideFragmentA();
        showFragmentB();
      }
    }, 5000)

Wobei 5000 - Verzögerung in Millisekunden

3
IlyaGulya 30 Dez. 2015 im 20:11

Verwenden Sie das folgende Codefragment für den Fragmentersatz:

FragmentB fragmentB= new FragmentB();
getSupportFragmentManager()
            .beginTransaction()
            .replace(R.id.fl, fragmentB)
            .commit();

Wenn Sie das Fragment nach 5 Sekunden ersetzen müssen, planen Sie einfach ein Ereignis / eine Aufgabe für 5 Sekunden. Wenn die Zeit abgelaufen ist, müssen Sie nur das Ersetzen durchführen.

1
brave_warrior 30 Dez. 2015 im 19:43