Fragment互相切换,点击Fragment上的按钮跳转到Fragment简单总结
2016-06-23 11:33
639 查看
项目当中遇到了,一个头疼问题,布局主要采用MainActivity 挂载 Fragment 来显示内容,并实现点击底部标签实现切换。但是头疼的是项目当中有一个需求就是点击某个Fragment也面上的按钮跳转到 另一个Fragment上。找了好多资料效果都不理想。后来在朋友的帮助下 找到了方法 。下面简单的总结一下,注意事项和参数都在注视当中写了不在赘述。
/**
* changeToClassifyFragment()该方法与changFragmentByTag()配合使用,可以实现Fragment点击底部标签切换,同样可以实现点击Fragment上的按钮
* 来控制切换Frgment 在Fargment调用MainActivity的changeToClassifyFragment()的方法为 ((MainActivity) getActivity()).changeToClassifyFragment();
* 注意这里必须进行一下强转,Fragment才能调用MainActivity的方法。currentFragment 为当前显示的Fragment 。简单总结希望对大家有帮助
*((MainActivity) getActivity()).changeToClassifyFragment();
* */
public void changeToClassifyFragment() {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
if (fragClassify == null) {
fragClassify = new FragmentClassify();
}
homePageImgBtn.setImageResource(R.mipmap.ic_home_per);
homePageTv.setTextColor(getResources().getColor(R.color.bottomtab_normal));
classifyImgBtn.setImageResource(R.mipmap.ic_classify_check);
classifyTv.setTextColor(getResources().getColor(
R.color.bottomtab_press));
scanImgBtn.setImageResource(R.mipmap.erweima);
shoppingCartImgBtn.setImageResource(R.mipmap.ic_shopping_per);
shoppingCartTv.setTextColor(getResources().getColor(
R.color.bottomtab_normal));
mySetImgBtn.setImageResource(R.mipmap.ic_my_per);
mySetTv.setTextColor(getResources().getColor(
R.color.bottomtab_normal));
currentFragment =changFragmentByTag(currentFragment, fragClassify, ft, "HiliFragment");
}
public Fragment changFragmentByTag(Fragment currFragment, Fragment chooseFragment, FragmentTransaction ft,String TAG) {
if (currFragment != chooseFragment) {
ft.hide(currFragment);
if (chooseFragment.isAdded()) {
ft.show(chooseFragment);
} else {
ft.add(R.id.content_layout, chooseFragment, TAG);
}
}
ft.commitAllowingStateLoss();
return chooseFragment;
}
/**
* changeToClassifyFragment()该方法与changFragmentByTag()配合使用,可以实现Fragment点击底部标签切换,同样可以实现点击Fragment上的按钮
* 来控制切换Frgment 在Fargment调用MainActivity的changeToClassifyFragment()的方法为 ((MainActivity) getActivity()).changeToClassifyFragment();
* 注意这里必须进行一下强转,Fragment才能调用MainActivity的方法。currentFragment 为当前显示的Fragment 。简单总结希望对大家有帮助
*((MainActivity) getActivity()).changeToClassifyFragment();
* */
public void changeToClassifyFragment() {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
if (fragClassify == null) {
fragClassify = new FragmentClassify();
}
homePageImgBtn.setImageResource(R.mipmap.ic_home_per);
homePageTv.setTextColor(getResources().getColor(R.color.bottomtab_normal));
classifyImgBtn.setImageResource(R.mipmap.ic_classify_check);
classifyTv.setTextColor(getResources().getColor(
R.color.bottomtab_press));
scanImgBtn.setImageResource(R.mipmap.erweima);
shoppingCartImgBtn.setImageResource(R.mipmap.ic_shopping_per);
shoppingCartTv.setTextColor(getResources().getColor(
R.color.bottomtab_normal));
mySetImgBtn.setImageResource(R.mipmap.ic_my_per);
mySetTv.setTextColor(getResources().getColor(
R.color.bottomtab_normal));
currentFragment =changFragmentByTag(currentFragment, fragClassify, ft, "HiliFragment");
}
public Fragment changFragmentByTag(Fragment currFragment, Fragment chooseFragment, FragmentTransaction ft,String TAG) {
if (currFragment != chooseFragment) {
ft.hide(currFragment);
if (chooseFragment.isAdded()) {
ft.show(chooseFragment);
} else {
ft.add(R.id.content_layout, chooseFragment, TAG);
}
}
ft.commitAllowingStateLoss();
return chooseFragment;
}
相关文章推荐
- 2、xen虚拟机的安装
- Jenkins+SVN+Maven+Shell 实现项目一键发布
- java的poi技术读取Excel数据到MySQL
- Android采用File形式保存与读取数据的方法
- OpenResty学习笔记(四) string库
- 资源管理
- 战略性情绪分析的5大数据来源
- 函数和指针
- POJ百练2798 (2进制转化16进制)
- AP 6522
- 修改(或伪装)你的Linux发行版
- swiper 内容超出纵向滚动 解决办法
- windows下安装oracle,sqlplus连接启动oracle(oracle 主机字符串输入是什么)
- thinkphp nginx 配置
- Spring DI的配置使用
- Python reportLab 生成PDF
- mapper映射文件配置之insert、update、delete
- android sdk安装后出现location of the android sdk has not been setup in the preferences相关问题
- Redis与Memcached的区别
- 基于云模型的个性化推荐算法