有类似的问题,但没有一个能解决我的问题。 我的应用程序流程如下:
Activity home 启动 Activity B(执行设置工作) 在 Activity B 中,三个屏幕作为 fragment ...... fragment 1 -> fragment 2 -> fragment 3。
这就是我制作 fragment 的方式。我没有使用替换。只是添加它。
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
Fragment fragment = null;
if (getFragType().equals("simple")) {
fragment = new SimpleFragment().newInstance();
}
if (getFragType.equals("inter")) {
if (getFragType.getComponent().equals("con"))
fragment = new SetupConFragment().newInstance();
else if (getFragType.getComponent().equals("ben"))
fragment = new SetupBenageFragment().newInstance();
}
fragmentTransaction.add(R.id.fragment_container, fragment);
fragmentTransaction.commit();
}
Fragment3 有一个完成按钮。因此,一旦从 fragment 3 开始完成所有 3 个步骤,我就会启动一个新 Activity C。
问题是:-- 在 Activity C 中,如果用户按下后退按钮,它会显示 fragment 2,然后是 fragment 1。理想情况下,一旦用户处于 Activity C 中,后退按钮应该只是退出屏幕 我已经使用了 Intent 标志的所有组合,但没有帮助。
这是我的按钮点击。
Intent launch = new Intent(mContext, MainActivity.class);
launch.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
launch.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
launch.putExtra("Exit me", true);
mContext.startActivity(launch);
((ConfigureActivity)mContext).finish();
我们将不胜感激。
最佳答案
你可以这样做:
清除 fragment 堆栈:
getSupportFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
清除 Activity 堆栈:
Intent intent = new Intent(Your_Current_Activity.this, Your_Destination_Activity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK |Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
希望对您有所帮助。
关于android - 如何在单击按钮时清除 fragment 堆栈和 Activity 堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31737013/