您的位置:首页 > 其它

欢迎使用CSDN-markdown编辑器

2017-05-26 16:41 162 查看
这个方法可以解决页面重复的问题 保证当前页面显示的只有一个fragment。

只是每次都要遍历一遍 当前 FragmentManager里面的内容。

有需要的可以修改一下维护 用 onSaveInstanceState() 维护frament对象,就不用遍历了。

public void switchContent(Fragment to) {

if (mContent != to) {

mContent = to;

FragmentTransaction transaction;

transaction= mFragmentMan.beginTransaction().setCustomAnimations(

android.R.anim.slide_in_left, android.R.anim.slide_out_right);

if (mFragmentMan.getFragments() != null)

for (Fragment fragment : mFragmentMan.getFragments()) {

if (fragment.isVisible())

transaction = transaction.hide(fragment);

}

if (!to.isAdded()) { // 先判断是否被add过

transaction.add(R.id.fl_home, to).commit(); // 隐藏当前的fragment,add下一个到Activity中

} else {

transaction.show(to).commit(); // 隐藏当前的fragment,显示下一个

}

}

}

public class BaseFragment extends Fragment {

private static final String STATE_SAVE= “STATE_SAVE”;

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null) {
boolean isSupportHidden = savedInstanceState.getBoolean(STATE_SAVE);
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.hide(this)
ft.commit();
}
}

@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putBoolean(STATE_SAVE_IS_HIDDEN, isHidden());
}


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: