2016-08-02 19 views
-1

Hallo alle in der Notwendigkeit zu wissen, was die richtige Art der Verwendung der Async in Registerkarte Layout Aktivität ist.Wie Async Aufgabe in Android Tablayout-Aktivität zu verwenden ...?

In meiner Aufgabe gibt es eine Aktivität mit zwei Tabs.

Tab1 und Tab2

Tab1 Laden von Daten vom Server und die Daten zeigen.

Tab2 Laden Sie auch die anderen Daten vom Server und zeigen Sie die Daten in der Listenansicht.

Im Async-Task in Tab1 und Tab2, aber das Problem ist, wenn die Aktivität gestartet dann die beiden Async Task-Klasse führen zur gleichen Zeit, die den Fehler verursachen.

ich brauche, wie es sapratly‘zu verwenden, wenn erste Fragment Registerkarte visable ist dann die rirst Async Aufgabe ausführen und wenn das zweite Fragment ist das 2. Async Aufgabe eins nach dem anderen visable dann laufen.

Antwort

0

Meiner Meinung nach, sollten Sie besser nur eine Async Aufgabe mit Server bekommen Daten aus dann mit Registerkarten nacheinander

+0

wenn ich die wichtigsten Daten in Haupttätigkeit erhalten dann, wie diese Daten zu Registerkarten senden ....? – sunny

+0

Sie könnten einen Bus verwenden, zum Beispiel mit der [EventBus] (https://github.com/greenrobot/EventBus) -Bibliothek. – manfcas

+0

Probieren Sie http://stackoverflow.com/questions/12739909/send-data-from-activity-to-fragment-in-android und Sie können entweder einen Bus oder eine statische Variable verwenden –

1

behandeln können Sie beiden Szenarios verwenden:

1) Sie können sowohl AsyncTasks nennen in Ihrer Aktivität und zeigen Sie Daten in Ihren beiden Tabs.

2) nach Ausgabe

im mit Async Aufgabe in tab1 und tab2 aber das Problem ist, wenn die Aktivität begann dann Klasse der beide Async Aufgabe zur gleichen Zeit ausgeführt werden, die den Fehler verursachen.

Sie sollen Ihre AsyncTask in setUserVisibleHint() Methode auszuführen, die rufen, wenn das Fragment vollständig sichtbar.

Verwendung:

@Override 
public void setUserVisibleHint(boolean isVisibleToUser) { 
    // TODO Auto-generated method stub 
    super.setUserVisibleHint(isVisibleToUser); 

    if (isVisibleToUser) { 
     // execute your asynctask here 
    } 
} 
+0

wo und wie setUserVisibleHint() Methode – sunny

+0

Es ist eine Override-Methode von Fragment. Sie müssen also – Piyush

+0

thnx bro i – sunny

0

hinzufügen OnTabSelectedListener zu Ihrem TabLayout

// run asynctask 1 first and then 
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
     @Override 
     public void onTabSelected(TabLayout.Tab tab) { 
      if (tab.getPosition() == 0) 
       // run asynctask 1 
      else // run asynctask2 
     } 

     @Override 
     public void onTabUnselected(TabLayout.Tab tab) { 

     } 

     @Override 
     public void onTabReselected(TabLayout.Tab tab) { 

     } 
    });