项目当中遇到了,一个头疼问题,布局主要采用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;
}