2016-06-28 6 views
0

Ich arbeite an einer Android-App, die Token-Änderung bei jeder Datenanforderung an den Server beinhaltet. Daher muss ich jedes Mal ein neues Token an den Server senden, ansonsten muss sich der Benutzer erneut anmelden.Wie führe ich bestimmte Aufgaben innerhalb eines Fragments nur aus, wenn ein TabLayout aktiv ist?

Ich habe Probleme mit Tab-Layout, wo die Anfrage gleichzeitig sind. Gibt es eine Möglichkeit, eine Anfrage nur dann an den Server zu senden, wenn ein Tab aktiv ist?

PS. Ich habe versucht, Handler zu verwenden, die die Anfrage nach 2 Sekunden senden, aber es ist nicht effektiv.

+0

Dies bezieht sich nicht auf 'TabLayout'. Es ist in der Tat damit verbunden, synchronisierte API-Anfragen zu machen. Ist es nicht? – Sufian

+0

Und ich bin nicht überzeugt, dass Sie das tun können, indem Sie überprüfen, ob Ihr 'TabLayout' aktiv/ausgewählt ist oder nicht. Zum Beispiel, was ist, wenn zwei Schaltflächen zum Anfordern in derselben Registerkarte vorhanden sind? – Sufian

+0

Ich habe zwei Registerkarten, die erste ist am Anfang so sichtbar, die Anfrage wird auf der "onCreate" methd gesendet. Auf der zweiten Registerkarte muss ich die Anfrage nur senden, wenn sie aktiv ist. –

Antwort

0

Sie können dieses Fragment Methode überschreiben:

public class Your class extends Fragment { 

    @Override 
    public void setMenuVisibility(final boolean visible) { 
     super.setMenuVisibility(visible); 

     if (visible) 
     { 
      //launch task 
     } 
    } 
} 
+0

hat es funktioniert !! vielen Dank ....: D –

+0

Gern geschehen;) – David

0

Wenn das Fragment auf die Auswahl Registerkarte öffnen, unter Methode in Ihrem Fragment verwenden, wo Sie Ihre Aufgabe anrufen möchten. Die untere Methode wird nur aufgerufen, wenn die ausgewählte Registerkarte und ihr jeweiliges Fragment vollständig sichtbar ist.

public class MyFragment extends Fragment{ 
    .................. 
    .................. 

    @Override 
    public void setUserVisibleHint(boolean isVisibleToUser) { 
     super.setUserVisibleHint(isVisibleToUser); 

      if (isVisibleToUser) { 

       //your code here 

      } 
    } 

} 
Verwandte Themen