Android ViewPager包含每个页面的单独活动

Android ViewPager包含每个页面的单独活动,android,Android,了解如何在ViewPager的每个页面上设置单独的活动。我尝试使用FragmentActivity来实现兼容包,但在给定的示例中,它只是一种类型,即ListFragment 我从compatibility v4示例复制的代码: public class ViewPagerListActivity extends FragmentActivity { static final int NUM_ITEMS = 10; MyAdapter mAdapter; ViewPager mPager;

了解如何在ViewPager的每个页面上设置单独的活动。我尝试使用FragmentActivity来实现兼容包,但在给定的示例中,它只是一种类型,即ListFragment

我从compatibility v4示例复制的代码:

public class ViewPagerListActivity extends FragmentActivity {
static final int NUM_ITEMS = 10;

MyAdapter mAdapter;

ViewPager mPager;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.fragment_pager);

    mAdapter = new MyAdapter(getSupportFragmentManager());

    mPager = (ViewPager)findViewById(R.id.pager);
    mPager.setAdapter(mAdapter);

    // Watch for button clicks.
    Button button = (Button)findViewById(R.id.goto_first);
    button.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            mPager.setCurrentItem(0);
        }
    });
    button = (Button)findViewById(R.id.goto_last);
    button.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            mPager.setCurrentItem(NUM_ITEMS-1);
        }
    });
}

public static class MyAdapter extends FragmentPagerAdapter {
    public MyAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public int getCount() {
        return NUM_ITEMS;
    }

    @Override
    public Fragment getItem(int position) {
        return ArrayListFragment.newInstance(position);
    }
}

public static class ArrayListFragment extends ListFragment {
    int mNum;

    /**
     * Create a new instance of CountingFragment, providing "num"
     * as an argument.
     */
    static ArrayListFragment newInstance(int num) {
        ArrayListFragment f = new ArrayListFragment();

        // Supply num input as an argument.
        Bundle args = new Bundle();
        args.putInt("num", num);
        f.setArguments(args);

        return f;
    }

    /**
     * When creating, retrieve this instance's number from its arguments.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mNum = getArguments() != null ? getArguments().getInt("num") : 1;
    }

    /**
     * The Fragment's UI is just a simple text view showing its
     * instance number.
     */
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.fragment_pager_list, container, false);
        View tv = v.findViewById(R.id.text);
        ((TextView)tv).setText("Fragment #" + mNum);
        return v;
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        setListAdapter(new ArrayAdapter<String>(getActivity(),
                android.R.layout.simple_list_item_1, Cheeses.sCheeseStrings));
    }

    @Override
    public void onListItemClick(ListView l, View v, int position, long id) {
        Log.i("FragmentList", "Item clicked: " + id);
    }
}    
public class viewPagerStactivity扩展了FragmentActivity{
静态最终整数项=10;
MyAdapter mAdapter;
可视寻呼机;
/**在首次创建活动时调用*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_pager);
mAdapter=新的MyAdapter(getSupportFragmentManager());
mPager=(ViewPager)findViewById(R.id.pager);
mPager.setAdapter(mAdapter);
//注意按钮的点击。
Button Button=(Button)findViewById(R.id.goto_first);
setOnClickListener(新的OnClickListener(){
公共void onClick(视图v){
mPager.setCurrentItem(0);
}
});
按钮=(按钮)findViewById(R.id.goto_last);
setOnClickListener(新的OnClickListener(){
公共void onClick(视图v){
mPager.setCurrentItem(NUM_ITEMS-1);
}
});
}
公共静态类MyAdapter扩展了FragmentPagerAdapter{
公共MyAdapter(FragmentManager fm){
超级(fm);
}
@凌驾
public int getCount(){
返回NUM_项;
}
@凌驾
公共片段getItem(int位置){
返回ArrayListFragment.newInstance(位置);
}
}
公共静态类ArrayListFragment扩展了ListFragment{
国际货币基金组织;
/**
*创建CountingFragment的新实例,提供“num”
*作为论据。
*/
静态ArrayListFragment newInstance(int num){
ArrayListFragment f=新的ArrayListFragment();
//提供num输入作为参数。
Bundle args=新Bundle();
args.putInt(“num”,num);
f、 设置参数(args);
返回f;
}
/**
*创建时,从实例的参数中检索该实例的编号。
*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
mNum=getArguments()!=null?getArguments().getInt(“num”):1;
}
/**
*片段的UI只是一个简单的文本视图,显示其
*实例号。
*/
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图v=充气机。充气(R.layout.fragment\u pager\u list,container,false);
查看电视=v.findviewbyd(R.id.text);
(文本视图)tv.setText(“片段”+mNum);
返回v;
}
@凌驾
已创建ActivityState上的公共无效(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
setListAdapter(新的ArrayAdapter(getActivity()),
android.R.layout.simple_list_item_1,Cheeses.sCheeseStrings));
}
@凌驾
public void onListItemClick(列表视图l、视图v、整数位置、长id){
Log.i(“碎片列表”,“单击的项目:”+id);
}
}    
}

以下执行:


我想在每个ViewPager上放置带有特定UI和流程的活动或视图,而不是像上面代码示例中那样的一种类型的ListView。例如,第1页是地图信息;第2页是文本视图、编辑视图和按钮的组合,第3页是图库;等等有没有实施的想法?或者有关于这个的教程吗?

创建您自己的片段,例如:第一个是MapFragment,第二个是FormFragment,最后一个是GalleryFragment。可以在getItem()方法中轻松获取视图。在方法内实现if语句并返回实际片段。if(position==0){return MapFragment.newIntance()}else if(position==1){return FormFragment.newInstance()}else if(position==2){return GallaryFragment.newInstance}“关于如何在ViewPager的每个页面上设置单独的活动的任何想法。”--请不要这样做。“活动中的活动”(例如,活动作为
TabHost
中选项卡的内容)的概念在Android 3.2中被弃用。@kameny,我将尝试你的建议。thanks@CommonsWare,如果此方法在下一个Android中被弃用。在TabHost甚至ViewPager上实现大量组合小部件的最佳方法是什么?@Faren:您可以使用视图作为选项卡的内容。只需将每个选项卡设置为
LinearLayout
RelativeLayout
或其他内容。创建自己的片段,例如:第一个是MapFragment,第二个是FormFragment,最后一个是GalleryFragment。可以在getItem()方法中轻松获取视图。在方法内实现if语句并返回实际片段。if(position==0){return MapFragment.newIntance()}else if(position==1){return FormFragment.newInstance()}else if(position==2){return GallaryFragment.newInstance}“关于如何在ViewPager的每个页面上设置单独的活动的任何想法。”--请不要这样做。“活动中的活动”(例如,活动作为
TabHost
中选项卡的内容)的概念在Android 3.2中被弃用。@kameny,我将尝试你的建议。thanks@CommonsWare,如果此方法在下一个Android中被弃用。在TabHost甚至ViewPager上实现大量组合小部件的最佳方法是什么?@Faren:您可以使用视图作为选项卡的内容。只需将每个选项卡设置为
线性布局
相对布局
或其他内容。