假设场景:登录、注册
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mFragmentManager = getSupportFragmentManager();
addFragment(new LoginFragment(), "login");
}
public void addFragment(Fragment fragment, String tag) {
FragmentTransaction beginTransaction = mFragmentManager.beginTransaction();
beginTransaction.add(R.id.login_content, fragment, tag);
// 添加到回退栈,并定义标记
beginTransaction.addToBackStack(tag);
beginTransaction.commit();
}
/**
* 监听返回键
*/
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
// 获取当前回退栈中的Fragment个数
int backStackEntryCount = mFragmentManager.getBackStackEntryCount();
// 回退栈中至少有多个fragment,栈底部是首页
if (backStackEntryCount > 1) {
// 回退一步
mFragmentManager.popBackStackImmediate();
// 获取当前退到了哪一个Fragment上,重新获取当前的Fragment回退栈中的个数
FragmentManager.BackStackEntry backStack = mFragmentManager.getBackStackEntryAt(mFragmentManager.getBackStackEntryCount() - 1);
// 获取当前栈顶的Fragment的标记值
String tag = backStack.getName();
if (tag.equals("login")) {
if (isLogin) {
addFragment(new LoginFragment(), "login");
isLogin = false;
} else
finish();
}
} else {
finish();
}
}
return true;
}
@OnClick({R.id.btn_register})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.btn_register:
LoginActivity activity = (LoginActivity) getActivity();
activity.addFragment(new RegisterFragment(), "register");
FragmentTransaction fragmentTransaction = getActivity().getSupportFragmentManager().beginTransaction();
fragmentTransaction.hide(getActivity().getSupportFragmentManager().findFragmentByTag("login"));
fragmentTransaction.commit();
break;
}
}
@OnClick({R.id.btn_back})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.btn_back:
FragmentTransaction fragmentTransaction = getActivity().getSupportFragmentManager().beginTransaction();
fragmentTransaction.show(getActivity().getSupportFragmentManager().findFragmentByTag("login"));
fragmentTransaction.hide(getActivity().getSupportFragmentManager().findFragmentByTag("register"));
fragmentTransaction.commit();
break;
}
}
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有