重新加载属于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

上一篇: Reload a Fragment that is Part of ViewPager

下一篇: How to show fragment as a dialog?