我想按退出按钮后删除/清除导航片段。
详情
在Fragment中我有一个按钮,我想退出并返回登录界面(活动),我已经尝试了所有可能的解决方案,但没有得到我的问题的解决方案。问题是一样的,从我按下后退按钮的登录活动再次进入注销片段,我已经使用下面的代码了
我正在使用app.Fragment,而我正在使用以下ans,
第一个解决方案
FragmentManager fm = getActivity().getFragmentManager();
fm.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
第二个解决方案
FragmentManager fm = getFragmentManager();
int count = fm.getBackStackEntryCount();
for(int i = 0; i < count; ++i) { fm.popBackStack(); }
第3次Soultion
getFragmentManager().popBackStack(getFragmentManager()
.getBackStackEntryAt(0).getId(), FragmentManager.POP_BACK_STACK_INCLUSIVE);
第四个解决方案
FragmentManager manager = getFragmentManager();
manager.popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
startActivity(new Intent(mContext, Login_Activity.class));
以上代码均不适合我,需要建议和解决方案,谢谢
答案 0 :(得分:0)
在退出时使用getActivity.finish()
并结束其他活动..
答案 1 :(得分:0)
getActivity().getSupportFragmentManager().beginTransaction().remove(this).commit();
来自您的片段 或致电
getSupportFragmentManager().beginTransaction().remove(fragment).commit();
来自您的活动
从您要在注销
上删除的片段中调用此内容答案 2 :(得分:0)
科特林溶液。在Java中也应该可行。
这将删除所有后台活动,因此不需要循环。您可以将此代码放入退出/退出方法
val intent = Intent(this, ypurAfterSignOutAcitivy::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK)
startActivity(intent)
答案 3 :(得分:0)
对我来说,完成活动并以额外的工作正常重新启动它 (我使用的是单个活动,对于多个活动,您可以广播您的活动并完成它们)
fun logout() {//this is on MainActivity
val intent = Intent(this, MainActivity::class.java).apply {
putExtra(EXTRA_START_FRAG, R.id.loginFragment)
}
startActivity(intent)
finish()
}
navController.navigate(extras.getInt(EXTRA_START_FRAG))