每次单击主屏幕按钮时,如何获取android后退按钮以关闭应用程序?

时间:2018-10-22 22:40:40

标签: android

嗨,我是android开发的新手。我遇到了碎片问题。最初,每当我打开一个片段并按下android设备上的后退按钮时,它将关闭该应用程序,直到我找到一个涉及使用fragmentTransaction.addToBackStack(null)方法的解决方案为止;但是我的问题是,如果我每次打开一个新片段时都从home片段中打开其他片段,然后单击home按钮,则后退按钮即使回到home片段后也会一直返回到先前的片段。为了进一步说明,假设这是我在应用程序上的事件。

app打开=>主页片段=>片段B =>主页片段=>片段c =>片段D =>主页片段

当我按下“后退”按钮时,它就是这样做的:

首页片段=>片段D =>片段c =>首页片段=>片段B =>首页片段=>应用关闭

我不喜欢这样的事实,即使在击中主片段后,应用程序仍会继续返回到主片段之前的片段。

请确保我每次用户到达首页片段并按返回按钮时,都会取消所有其他片段,然后关闭应用程序。

我希望我能解释得很好。请任何帮助将非常有帮助。谢谢。

2 个答案:

答案 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();
    }