Android Fragment ViewPager在设置适配器后没有更新

时间:2014-03-01 05:38:29

标签: android animation android-fragments

我有一个动画,它带有两个代表膨胀布局的碎片。用户与之交互的主要布局是ViewPager。这个ViewPager会根据用户的操作定期更新。

问题是,当动画发生时,会重新创建片段,因此会重新创建ViewPager,这很好,因为动画旨在作为加载场景。当主要片段出现时,ViewPager的页面是空的?它们一直是空的,直到我来回地发现它们看起来“神奇地”装载它似乎......

任何帮助都会很棒。

主视图ViewPager(内部类)的片段:

    /**
 * A fragment representing the front of the card.
 */
public static class CardFrontFragment extends Fragment { 

    public CardFrontFragment() {

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View rootView;

        rootView = inflater.inflate(R.layout.activity_dashboard, container, false);

        TextView    textviewLocation    = (TextView)rootView.findViewById(R.id.textview_location);
        TextView    textviewConditions  = (TextView)rootView.findViewById(R.id.textview_points);
        ViewPager   viewPagerDashboard  = (ViewPager)rootView.findViewById(R.id.viewPager_Dashboard);

        if(overviewData != null) {

            textviewLocation.setText(overviewData.getLocation());
            textviewPoints.setText(overviewData.getPoints());

            viewPagerDashboard.setAdapter(adapterSectionsPager);
            viewPagerDashboard.invalidate();
            adapterSectionsPager.notifyDataSetChanged();


        }

        return rootView;
    }
}

现在每次动画发生时,当主要片段出现时,它会重新创建为您在上面看到的内容。

以下是ViewPager的适配器:

public class SectionsPagerAdapter extends FragmentStatePagerAdapter {

    public SectionsPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public android.support.v4.app.Fragment getItem(int position) {
        return DashboardSectionFragment.create
                (uiContext, position, overviewData, moreData, moreData, moreData);
    }

    @Override
    public int getCount() {
        // Show 4 total pages:
        return 4;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        Locale l = Locale.getDefault();
        switch (position) {
        case 0:
            return getString(R.string.title_section_1).toUpperCase(l);
        case 1:
            return getString(R.string.title_section_2).toUpperCase(l);
        case 2:
            return getString(R.string.title_section_3).toUpperCase(l);
        case 3:
            return getString(R.string.title_section_4).toUpperCase(l);
        }
        return null;
    }

    @Override
    public int getItemPosition(Object object) {
        return POSITION_NONE;
    }
}

然后设置适配器并完成所有UI工作,其中包含一个ListView 第一页。

让我感到困惑的是,当应用程序首次启动时,动画发生在immidiatley,一切正常,页面被添加并可以看到。但是,当用户按下一个按钮并触发完全相同的进程时,ViewPager似乎会更新,但是没有推出更新?我可以看到应该是页面的标签条,但是在通过物理手势循环之前页面不会加载...

非常感谢任何帮助。

0 个答案:

没有答案