我的问题是,我有一个 Activity 和一个 fragment ,从 Activity 中打开该 fragment 但是当我按下后退按钮时它关闭了应用程序。我尝试使用这段代码。
用于开放 fragment 。
case R.id.button_contact:
Fragment fragment = new FragmentContact();
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.frame_container,fragment).addToBackStack("Frag1").commit();
break;
用于后退按钮。
@Override
public void onBackPressed() {
getSupportFragmentManager().popBackStackImmediate("Frag1",0);
super.onBackPressed();
}
我假设您只想删除 fragment 并保留 Activity ?
在这种情况下,将您的 onBackPressed 方法修改为
@Override
public void onBackPressed() {
if (getSupportFragmentManager().findFragmentByTag("Frag1") != null) {
getSupportFragmentManager().popBackStackImmediate("Frag1",0);
} else {
super.onBackPressed();
}
}
如果 fragment 被添加,这将从 Activity 中删除 fragment ,如果没有,则后退按钮将正常运行并销毁 Activity 。
我是一名优秀的程序员,十分优秀!