2016-08-02 72 views
-1

大家好,需要知道在選項卡布局活動中使用Async的正確方法是什麼。如何在android tablayout activity中使用異步任務...?

在我的任務有兩個選項卡的活動。

TAB1TAB2

從服務器TAB1加載數據並顯示數據。

Tab2還從服務器加載另一個數據並以列表視圖顯示數據。

IM在TAB1和TAB2使用異步任務,但問題是當活動開始,然後兩個異步任務類以引起誤差同時執行

我需要如何使用它」 sapratly當第一標籤片段是visable然後運行rirst 異步任務和當第二片段是visable然後通過一個運行第二異步任務之一。

回答

0

在我看來,你最好只使用一個異步任務從服務器獲取數據,然後通過一個

+0

,如果我得到在主要活動中的主要數據,那麼如何發送這個數據標籤....? – sunny

+0

您可以使用公共汽車,例如[EventBus](https://github.com/greenrobot/EventBus)庫。 – manfcas

+0

試試這個http://stackoverflow.com/questions/12739909/send-data-from-activity-to-fragment-in-android ,你可以使用總線或靜態變量 –

1

與標籤一個手柄,您可以同時使用場景:

1)你可以調用兩個AsyncTasks在您的活動中並在兩個標籤中顯示數據。

2)根據發行

在TAB1和TAB2使用異步任務IM,但問題是當活動開始,然後兩個異步任務類,在同一時間,導致錯誤執行。

您應該在setUserVisibleHint()方法中執行AsyncTask方法,該方法會在您的碎片完全可見時調用。

用途:

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

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

在哪裏以及如何使用setUserVisibleHint()方法 – sunny

+0

它是片段的重寫方法。因此,你需要在_Tab1_和_Tab2_同時調用 – Piyush

+0

日Thnx兄弟,我會嘗試 – sunny

0

添加OnTabSelectedListenerTabLayout

// 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) { 

     } 
    });