相关疑难解决方法(0)

FragmentPagerAdapter和FragmentStatePagerAdapter有什么区别?

FragmentPagerAdapter和之间有什么区别FragmentStatePagerAdapter

关于FragmentPagerAdapterGoogle的指南说:

此版本的寻呼机最适合在有少量通常更多静态片段进行分页时使用,例如一组选项卡.用户访问的每个页面的片段将保留在内存中,但其视图层次结构可能在不可见时被销毁.这可能导致使用大量内存,因为片段实例可以保持任意数量的状态.对于较大的页面集,请考虑FragmentStatePagerAdapter.

关于FragmentStatePagerAdapter:

当存在大量页面时,此版本的寻呼机更有用,更像列表视图.当页面对用户不可见时,它们的整个片段可能被破坏,只保留该片段的保存状态.与FragmentPagerAdapter在页面之间切换时可能更多的开销相比,这允许寻呼机保持与每个被访问页面相关联的更少的存储器 .

所以我只有3个片段.但它们都是具有大量数据的独立模块.

Fragment1处理一些数据(用户输入)并通过活动传递给它Fragment2,这很简单ListFragment.Fragment3也是一个ListFragment.

所以我的问题是:我应该使用哪种适配器?FragmentPagerAdapter还是FragmentStatePagerAdapter

android android-fragments android-viewpager fragmentpageradapter fragmentstatepageradapter

357
推荐指数
5
解决办法
11万
查看次数

如何在Android上重置viewpager内容?

请告诉我如何在android上重置ViewPager的内容.我试图调用adapter.notifyDataSetChanged()但是当我滚动视图时,适配器不会调用getItem(position).它总是返回旧的子视图.

更新:这是我的片段视图.当我重置viewPager数据时,它使用了加载的Fragment视图.它只是从onCreateView而不是Constructor开始.

public class ResultView extends Fragment {
//Declare properties

     //Constructor 
public ResultView(Province province, Calendar calendar) {
    Log.d("xskt", "ResultView constructor");
    this.province = province;
    this.calendar = (Calendar) calendar.clone();
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    Log.d("xskt", "ResultView onCreateView");
    View view = inflater.inflate(R.layout.resultview, null);

    //do some thing

    return view;
}
Run Code Online (Sandbox Code Playgroud)

谢谢.

android android-viewpager

6
推荐指数
1
解决办法
9848
查看次数

删除并添加页面到FragmentPagerAdapter

我正在使用5页的片段寻呼机适配器.并设置适配器以查看寻呼机,如下所示

 public class xxx extends FragmentPagerAdapter
    {
        final int PAGE_COUNT_LOGGED_IN = 6;
        final int PAGE_COUNT_LOGGED_OUT = 2;
        TextView oTextView = null;
        LayoutInflater inflater = null;
        PagerTabStrip m_oPageTabStrip = null;
        String m_strTab = null;
        String[] m_strArray = null;     
        Context m_oContext = null;

        /** Constructor of the class */
        public xxxx (Context context, android.support.v4.app.FragmentManager oFragmentManager) 
        {
            super (oFragmentManager);
            m_oContext = context;
        }

        /** This method will be invoked when a page is requested to create */
        @Override
        public Fragment getItem(int arg0) 
        { …
Run Code Online (Sandbox Code Playgroud)

android adapter android-fragments android-viewpager fragmentpageradapter

6
推荐指数
1
解决办法
7235
查看次数