欢迎使用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”;
}
只是每次都要遍历一遍 当前 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()); }
}
相关文章推荐
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器ss
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器