// 主Activity
public class HomeActivity extends FragmentActivity implements OnClickListener {
private TextView footerLeft;
private TextView footerMiddle;
private TextView footerRight;
private Context context;
private FragmentManager fragmentManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.home_activity);
initArgs();
getView2Init();
initFragment(new Fragment1());
}
/**
* 初始化变量
*/
private void initArgs() {
context = HomeActivity.this;
fragmentManager = getSupportFragmentManager();
}
/**
* 获得布局文件上的控件并初始化
*/
private void getView2Init() {
// 获得控件View
footerLeft = (TextView) findViewById(R.id.tv_footer_left);
footerMiddle = (TextView) findViewById(R.id.tv_footer_middle);
footerRight = (TextView) findViewById(R.id.tv_footer_right);
// 初始化控件View
footerLeft.setOnClickListener(this);
footerMiddle.setOnClickListener(this);
footerRight.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// 当footer中的三个文本控件被点击时,作出回应
if (v == footerLeft) {
Toast.makeText(context, "点击了底栏left左边按钮", Toast.LENGTH_SHORT).show();
updateFragment(new Fragment1(), false);
} else if (v == footerMiddle) {
Toast.makeText(context, "点击了底栏middle中间按钮", Toast.LENGTH_SHORT).show();
updateFragment(new Fragment2(), false);
} else if (v == footerRight) {
Toast.makeText(context, "点击了底栏Right右边按钮", Toast.LENGTH_SHORT).show();
updateFragment(new Fragment3(), false);
}
}
/**
* 初始化Fragment
*
* @param f
*/
private void initFragment(Fragment f) {
updateFragment(f, true);
}
/**
* 更新Fragment
*
* @param f
* @param isInit
*/
private void updateFragment(Fragment f, boolean isInit) {
FragmentTransaction ft = fragmentManager.beginTransaction();
ft.replace(R.id.content, f);
ft.commit();
}
}
// 用来实现切换的Adapter
public class MyPagerAdapter1 extends FragmentStatePagerAdapter {
protected static final String[] SUB_FRAGMENT = new String[] { "Fragment1_1", "Fragment1_2",
"Fragment1_3" }; // 对应于每个大Fragment的小Fragment
private int mCount = SUB_FRAGMENT.length;
public MyPagerAdapter1(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
if (0 == position) {
return new Fragment1_1();
} else if (1 == position) {
return new Fragment1_2();
} else if (2 == position) {
return new Fragment1_3();
} else {
System.out.println("创建子Fragment1_" + position + "失败");
return null;
}
}
@Override
public int getCount() {
return mCount;
}
@Override
public CharSequence getPageTitle(int position) {
return SUB_FRAGMENT[position % mCount];
}
}
// 主Activity下有三个一级Fragment,这是其中之一
public class Fragment1 extends Fragment {
private MyPagerAdapter1 mAdapter;
private ViewPager mPager;
private TitlePageIndicator mIndicator;
private static int mCurrentSubFragmentSeq = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment1, container, false);
System.out.println("F1:onCreateView");
mAdapter = new MyPagerAdapter1(getFragmentManager());
mPager = (ViewPager) v.findViewById(R.id.pager);
mPager.setAdapter(mAdapter);
mIndicator = (TitlePageIndicator) v.findViewById(R.id.titles);
mIndicator.setViewPager(mPager, mCurrentSubFragmentSeq);
System.out.println("2、mCurrent Sub Fragment Sequence: " + mCurrentSubFragmentSeq);
mIndicator.setFooterIndicatorStyle(IndicatorStyle.Triangle);
mIndicator.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
System.out.println("Changed to page " + position);
mCurrentSubFragmentSeq = position;
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
return v;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
}
// 每个一级Framgment下面有三个二级Fragment,这是其中之一
public class Fragment1_1 extends Fragment {
private static final String KEY_CONTENT = "Fragment1:Content";
private Bundle bundle;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if ((savedInstanceState != null) && savedInstanceState.containsKey(KEY_CONTENT)) {
bundle = savedInstanceState.getBundle(KEY_CONTENT);
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment1_1, container, false);
return v;
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putBundle(KEY_CONTENT, bundle);
}
}
分享到:
相关推荐
Android主页面多层Fragment嵌套(Fragment+ViewPager)滑动,一个适合学习的好的demo,给学习Android开发的新手朋友传播数来
viewPager + fragment实现基础的页面滑动效果,Fragment+Fragment实现滑动
fragment嵌套fragment 和 滑动菜单
Activity嵌套fragment大全,activity加载单个fragment,TabLayout+ViewPager实现多个fragment滑动效果
基于滑动菜单(SlidingMenu)的Demo,其中主要解决了Fragment切换的状态保存,Fragment嵌套问题解决,Fragment多次加载UI问题修改,在Fragment中实现TabHost效果(fragment嵌套3层)! 解决的各个问题都是开发中经常...
Android主页面 多层Fragment嵌套(Fragment+ViewPager)滑动,一个适合学习的好的demo,给学习android开发的新手朋友传播数来
FragmentDome,完整的Dome,其包扩fragment的多层嵌套,并且使用viewpager嵌套多层fragment,并且实现活动和点击的完美效果,另外还添加滑动时的动画效果
android app 快速开发框架(挑选最简洁最适用的框架实现) 1)外层 FragmentTabHost+Fragment构建外层框架 2)内层 TabPageIndicator+ViewPager+Fragment构建内层滑动框架
Activity中嵌套多个Fragment,利用ViewPager实现左右滑动,使用两个Activity实现横竖屏切换案例。横屏与竖屏布局不一样。
viewpager+fragment实现的滑动翻页效果,可滑动翻页可点击翻页,简单demo
十、fragment中嵌套fragment的使用。 十一、代码更新提示及链接下载界面。 十二、欢迎界面设计,不记得抄的谁的。 留言:代码如有雷同,请勿见怪,有一部分本身就是源码改造。如果使用过程中发现BUG,请留言给我,...
这是一个简单的Android实例,中使用了fragment +viewpager滑动切换,以及listview列表实现数据加载,适合新人学习的Android实例
重写了子viewpager的方法,Childviewpager继承了viewpager。解决了父viewpager不能滑动或者子viewpager不能...可以使子viewpager滑动到最后一页后直接滑入父viewpager的fragment。修改子viewpager可参考local.xml 。
1.较为完善的模仿“知乎”的通知界面,使用Fragment实现底部导航以及嵌套。 2.较为完善的模仿“知乎”的私信界面,在Fragment里使用自定义listview以及popupwindow弹出窗口。 3.较为完善的模仿“知乎”的设置界面,...
FragmentActivity +Fragment实现底部Tab切换,Fragment内viewPager再嵌套Fragment实现页面流畅滑动切换!
本文实例讲述了Android开发使用Activity嵌套多个Fragment实现横竖屏切换功能的方法。分享给大家供大家参考,具体如下: 一、上图 二、需求 近期项目遇到个横竖屏切换的问题,较为复杂,在此记之。 1、Activity中竖...
在Activity中使用多层ViewPager和Fragment的嵌套使用,还是实现了多种滑动效果
该demo是在一个activity中嵌套两个fragment,利用SlidingMenu控制左边的fragment展示滑动效果,然后在右边的fragment中又嵌套四个fragment,配合RadioButton实现fragment的切换。
viewpager+fragment+slidingmenu+viewpager广告(无线自动循环)嵌套使用,里面有详细的注解,viewpager+fragment已经设置取消预先加载下一页的fragment,viewpager+fragment+slidingmenu滑动不会影响到viewpager广告...
fragment嵌套子fragment,getChildFragmentManager()+viewPager实现嵌套,子fragment实现滑动动画