2016-06-17 49 views
4

我已經創建了一個具有4個按鈕的自定義頁腳的活動。如何在Android中處理碎片重新加載?

代碼頁腳按鈕的onClick:

@Override 
public void onClick(View v) 
{ 
    try 
    { 
     switch (v.getId()) 
     { 
      case R.id.button1: 

        getSupportFragmentManager() 
          .beginTransaction() 
          .addToBackStack(null) 
          .replace(R.id.flcontent,Tab1) 
          .commit(); 

       break; 

      case R.id.button2: 

       getSupportFragmentManager() 
         .beginTransaction() 
         .addToBackStack(null) 
         .replace(R.id.flcontent,Tab2) 
         .commit(); 

       break; 

      case R.id.button3: 

       getSupportFragmentManager() 
         .beginTransaction() 
         .addToBackStack(null) 
         .replace(R.id.flcontent, Tab3) 
         .commit(); 

       break; 

      case R.id.button4: 


       getSupportFragmentManager() 
         .beginTransaction() 
         .addToBackStack(null) 
         .replace(R.id.flcontent, Tab4) 
         .commit(); 

       break; 



     } 
    } catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 

} 

在標籤的onCreate方法,我撥打電話到服務器以獲取列表。 不同的標籤有不同的要求。

當我點擊按鈕2,TAB2負載,以此類推,直到將Button4,TAB4

例如,當我從TAB1導航到TAB2: 當我點擊Button2的,TAB1被TAB2更換一個新的列表被加載。 當我點擊Button1後,如何防止再次在Tab1中調用服務器?

+0

創建一個靜態變量來跟蹤,如果你有呼叫服務器,那麼你將不會再次調用它 –

回答

0

有一個android片段的生命週期方法,每當我們的片段被其他片段替換時,它會自動調用。

使用片段的適當片段活動生命週期方法,這些方法充當您的應用中的選項卡。例如當從TABL你的應用電影TAB2您使用的方法在Android開發者文檔上

//Add the below method to your tab1 fragment 
@Override 
void onDetach(){ 
    // write code here that would tell the server to stop loading data 
    // you can also use onPause and onStop 
} 

退房片段生命週期方法 https://developer.android.com/guide/components/fragments.html#Creating

+0

你能詳細說明一點。 – Anirudh

+0

請檢查更新後的答案並閱讀碎片文檔以獲得更好的理解。 –

0

對我來說,最好的方法是創建一個包含所有的一個Singleton類從服務器返回所有選項卡的數據。

當你顯示let讓我們說Tab1時,你應該檢查Singleton類中這個選項卡是否有任何信息。如果有什麼,請不要將呼叫發送到服務器。

你也可以通過在每個描述特定Tab的類中爲服務器提供信息的靜態數據容器(列表,哈希映射等)來做到這一點。

我個人比較喜歡第一種方式。

@KhizarHayat建議就像我上面描述的第二個選項,但只要確保在事務處理期間碎片被銷燬後服務器的數據不會被刪除。