重新加载属于ViewPager的片段
我需要重新加载作为ViewPager一部分的Fragment的帮助。 以下是我当前的设置:ReportActivity扩展了FragmentActivity并使用ViewPager来托管4个选项卡TAB 1到4.每个选项卡是具有独立布局的片段。
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(Int期)的代码的想法,
我建议重新配置现有的片段,而不是用新的报告期构建新的片段。
我猜你目前在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来替换它:在ViewPager中替换片段
链接地址: http://www.djcxy.com/p/79055.html