学习Android有一个月左右的时间,还是一名小白,接到大神的指示去做一款查询快递的软件,基本上属于边做边学,过程中有不少彷徨和收获,现在加以整理。
(一)ViewPager+Fragment实现滑动加按钮
首先介绍ViewPager这个类,这是android.support.v4.view包中的类(此包位于android-support-v4.jar中)。 好了,下面说用法吧。 必须要在布局文件中添加ViewPager:然后获得它的id。
<android.support.v4.view.ViewPager android:id="@+id/vp" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_above="@id/button" android:layout_weight="1" > </android.support.v4.view.ViewPager>
接下来就该提到FragmentPagerAdapter(android.support.v4.app),
private static class MyAdapter extends FragmentPagerAdapter{ private List<Fragment> myFragments; public MyAdapter(android.support.v4.app.FragmentManager fm,List<Fragment> myFragments) { super(fm); this.myFragments = myFragments; } @Override public android.support.v4.app.Fragment getItem(int arg0) { return myFragments.get(arg0); } @Override public int getCount() { return myFragments.size(); } }
大家一定注意到了MyAdapter的构造方法中有一个FragmentManager类,这个类就有的说了:如果你的MainActivity继承自Activity,那么你就要使用getFragmentManager()方法获得FragmentManager;如果你的MainActivity继承自FragmentActivity,那么你就要使用getSupportFragmentManager()方法获得FragmentManager。下面我们反着说一遍,假设你继承了Activity(android.app),你又通过getFragmentManager()方法获得了FragmentManager(android.app),好,现在都很顺利,接下来你自定义了一个FragmentPagerAdapter类,在构造方法中传入FragmentManager(android.app),你会发现Eclipse报错说,于是乎,这个时候你才发现FragmentPagerAdapter是在android.support.v4.app包中的,所以你还是老老实实地继承FragmentActivity(android.support.v4.app)吧!
最后,还要给ViewPager设置监听器:这个没什么难度。
最后,还要给ViewPager设置监听器:这个没什么难度。
myViewPager.setOnPageChangeListener(new OnPageChangeListener() { @Override public void onPageSelected(int arg0) { } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageScrollStateChanged(int arg0) { } });
通过滑动来切换Fragment已经完成了,那么,怎样通过按钮实现呢?ViewPager提供了这样一个方法:setCurrentItem(),用来设置当前的Fragment。这里放置了一个按钮并监听它。
@Override public void onClick(View v) { switch(v.getId()){ case R.id.button1: myViewPager.setCurrentItem(FIRST); break; case R.id.button2: myViewPager.setCurrentItem(SECOND); break; case R.id.button3: myViewPager.setCurrentItem(THIRD); break; } }
到此,就可以实现ViewPager+Fragment滑动或按钮实现切换效果了!
由于在下还是新手,所以有不对的地方请各位多多指教,有其他方法的大神们可以贴出来讨论讨论。
由于在下还是新手,所以有不对的地方请各位多多指教,有其他方法的大神们可以贴出来讨论讨论。