2012-06-12 45 views
1

如何动态创建PagerView?没有使用XML?比方说,我有一个xml布局是这样的:如何用碎片动态创建ViewPager?

<FrameLayout android:id="@+id/a_frame_for_pagerview" 
      ... > 

<!-- I WANT MY PAGERVIEW HERE BUT DYNAMICALLY, NO XML --> 

</FrameLayout> 

它并不需要是一个FrameLayout里,只是使用它,因为我认为这将是这种情况。

感谢您的帮助。

编辑:

我的主要问题是,我有太多的寻呼机,由于记忆,我希望他们被安置,但即使我去掉片段,其中该寻呼机内部崩溃,它不断引用到旧寻呼机(从我第一次创建片段),其中所有的片段被破坏,所以没有出现。

+0

我该怎么办,从我的片段?每次我想要一个新的ViewPager片段被隐藏(或删除)并再次显示(添加)。 – adheus

+0

其实问题的答案很长。我的简短答案是,假设您使用具有不同数据集的视图寻呼机,只需使用另一个充满数据集的适配器(包含片段的数组列表)更改其适配器,然后每次释放之前的适配器及其数据集。这样你解决了你的查看传呼机参考问题。小心强引用,这对于大型应用程序来说非常棘手。这就是我现在可以说的。如果这个解决方案不适合你,我可能会在本周内为你创建一个更长的答案。 –

回答

2

你可以做到这一点:

在你的XML:

<android.support.v4.view.ViewPager 
    android:id="@+id/viewPager" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    /> 

在你frament:

[....] 
mViewPager.setAdapter(new MyFragmentAdapter(getFragmentManager())); 
[....] 
public class MyFragmentAdapter extends FragmentPagerAdapter{ 

    public MyFragmentAdapter(FragmentManager fm) { 
     super(fm); 
     // TODO Auto-generated constructor stub 
    } 

    @Override 
    public Fragment getItem(int arg0) { 
     // TODO Auto-generated method stub 
     YourClassFragment fragment = new YourClassFragment(); 
     Bundle args = new Bundle(); 

     args.putParcelable("EXTRA_DATA", "VALUE"); 
     fragment.setArguments(args); 

     return fragment; 
    } 

    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return yourNumberOfFragment; 
    } 

} 
+0

什么是“args.putParcelable(”EXTRA_DATA“,”VALUE“);和fragment.setArguments(args)”?我的主要问题是我有许多寻呼机因为内存而崩溃,我希望它们被丢弃,但即使我删除了寻呼机所在的碎片,它仍然引用旧的寻呼机所有碎片被销毁的地方,所以没有任何东西出现。 – adheus

+0

args.putParcelable(“EXTRA_DATA”,“VALUE”);允许你为你的片段传递一些值,如idNews = 1,idNews = 2 ... –