Android fragments Android-重新加载作为ViewPager一部分的片段

Android fragments Android-重新加载作为ViewPager一部分的片段,android-fragments,android-viewpager,Android Fragments,Android Viewpager,我需要重新加载ViewPager中的片段的帮助。以下是我当前的设置: ReportActivity扩展了FragmentActivity,并使用ViewPager承载4个选项卡 表1至表4。每个选项卡都是一个具有单独布局的片段 ViewPager使用TabsPagerAdapter在选项卡之间切换,并按预期工作 TAB1Fragment使用静态数据集显示图形。现在,我添加了一个微调器来动态更改数据集,我正在寻找重新加载片段的方法,以便它可以使用正确的数据集重新显示图形。以下整数对应于微调器的值

我需要重新加载ViewPager中的片段的帮助。以下是我当前的设置: ReportActivity扩展了FragmentActivity,并使用ViewPager承载4个选项卡 表1至表4。每个选项卡都是一个具有单独布局的片段

ViewPager使用TabsPagerAdapter在选项卡之间切换,并按预期工作

TAB1Fragment使用静态数据集显示图形。现在,我添加了一个微调器来动态更改数据集,我正在寻找重新加载片段的方法,以便它可以使用正确的数据集重新显示图形。以下整数对应于微调器的值

    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;
            }

        }
mReportPeriodSpinner.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
开关(位置){
案例0:
//我如何在这里重新加载片段?
重新加载片段(报告周期日);
打破
案例1:
重新加载片段(报告周期为一周);
打破
案例2:
重新加载片段(报告期/月);
打破
案例3:
重新加载碎片(报告期/年度);
打破
}
}

请告诉我如何编写进入方法reloadFragment(Int period)的代码。

我建议重新配置现有片段,而不是用新的报告周期构建新片段

我猜您目前正在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替换它:

回答得很好,几乎成功了,但图形没有刷新,我可以使用您的方法加载正确的数据集。我将继续调查。谢谢您的回答