嗨,我是android开发的新手。我遇到了碎片问题。最初,每当我打开一个片段并按下android设备上的后退按钮时,它将关闭该应用程序,直到我找到一个涉及使用fragmentTransaction.addToBackStack(null)方法的解决方案为止;但是我的问题是,如果我每次打开一个新片段时都从home片段中打开其他片段,然后单击home按钮,则后退按钮即使回到home片段后也会一直返回到先前的片段。为了进一步说明,假设这是我在应用程序上的事件。
app打开=>主页片段=>片段B =>主页片段=>片段c =>片段D =>主页片段
当我按下“后退”按钮时,它就是这样做的:
首页片段=>片段D =>片段c =>首页片段=>片段B =>首页片段=>应用关闭
我不喜欢这样的事实,即使在击中主片段后,应用程序仍会继续返回到主片段之前的片段。
请确保我每次用户到达首页片段并按返回按钮时,都会取消所有其他片段,然后关闭应用程序。
我希望我能解释得很好。请任何帮助将非常有帮助。谢谢。
答案 0 :(得分:1)
始终提防编写与Android框架背道而驰的应用程序...
清除片段堆栈:
getSupportFragmentManager().popBackStack(null,
FragmentManager.POP_BACK_STACK_INCLUSIVE);
清除活动堆栈:
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);
答案 1 :(得分:0)
您可以在活动中尝试使用这两种方法-
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if(id == android.R.id.home){
finish();
}
return super.onOptionsItemSelected(item);
}
@Override
public void onBackPressed() {
finish();
super.onBackPressed();
}