2014-12-01 76 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