2014-12-01 56 views
0

我需要重新加載作爲ViewPager一部分的片段的幫助。以下是我目前的設置: ReportActivity擴展了FragmentActivity並使用ViewPager託管4個標籤 標籤1到4.每個標籤都是具有單獨佈局的片段。Android - 重新加載作爲ViewPager一部分的片段

ViewPager使用TabsPagerAdapter在選項卡之間切換,並且按預期工作。

TAB1Fragment使用靜態數據集顯示圖形。現在我添加了一個微調器來動態更改數據集,我正在尋找重新加載Fragment的方法,以便它可以使用正確的數據集重新顯示圖形。以下內容對應於Spinner的值。

static final int REPORT_PERIOD_DAY = 0; 
    static final int REPORT_PERIOD_WEEK = 1; 
    static final int REPORT_PERIOD_MONTH = 2; 
    static final int REPORT_PERIOD_YEAR = 3; 

我有一個正確的計算基礎上的INT傳遞正確的數據,我所用的是如何創建一個Intent或任何其他方法,將重新TAB1Fragment,傳遞給它一個int參數掙扎的方法。

這裏就是我要重新創建片段

 mReportPeriodSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
      switch (position){ 
       case 0: 
        //How can I re-load the Fragment here? 
        reloadFragment(REPORT_PERIOD_DAY); 
        break; 
       case 1: 
        reloadFragment(REPORT_PERIOD_WEEK); 
        break; 
       case 2: 
        reloadFragment(REPORT_PERIOD_MONTH); 
        break; 
       case 3: 
        reloadFragment(REPORT_PERIOD_YEAR); 
        break; 
      } 

     } 

請你能給我如何編寫進入方法reloadFragment代碼(智力週期)

回答

1

我的想法會建議重新配置現有的片段,而不是在新報告期間構建新的片段。

我猜你目前在TAB1Fragment的onCreateView中配置你的圖。如果您將該配置代碼移動到onResume,則可以在用戶在微調器中選擇某些內容時調用相同的函數。

public class TAB1Fragment extends Fragment { 
    int reportPeriod; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View rootView = ... 
     reportPeriod = REPORT_PERIOD_DAY; // default report period 
     return rootView; 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 
     configureGraph(); 
    } 

    private void configureGraph() { 
     //TODO put all the code that draws your graphs here, using reportPeriod 
    } 

    public void reloadFragment(int reportPeriod) { 
     this.reportPeriod = reportPeriod; 
     configureGraph(); 
    } 
} 

如果這種方法確實不適合你,你真的需要一個新的片段,每次,那麼這個問題解釋瞭如何獲取代碼的片段,讓你可以告訴FragmentManager來代替它: Replace Fragment inside a ViewPager

+0

偉大的答案,它幾乎工作,但圖形不刷新,我能夠使用您的方法加載正確的數據集。我會繼續調查。感謝你的回答 – 2014-12-02 18:04:45

相關問題