反压片段整理活动

时间:2018-06-15 09:24:19

标签: java android android-fragments

我有一个带有片段的活动,它也会导航。当你回击片段时,它应该返回到活动。但是,当你关闭应用程序关闭的那一刻。

现在这并不是完全不受欢迎的行为,因为我希望应用程序在您回访主要活动时关闭。

执行此操作的主要活动的代码:

@Override
    public void onBackPressed() {
        DrawerLayout drawer = findViewById(R.id.drawer_layout);

        if (drawer.isDrawerOpen(GravityCompat.START)) {
            drawer.closeDrawer(GravityCompat.START);
        } else {
            super.onBackPressed();

            this.finishAffinity();
        }
    }

片段上没有onBackPressed方法

我该如何做到这一点,以便当你回击片段时主要活动显示但是当你回到活动时应用程序关闭

2 个答案:

答案 0 :(得分:2)

使用类似这样的东西

适用于API级别5及更高级别

@Override
public void onBackPressed() {
  super.onBackPressed()
if (keycode == KeyEvent.KEYCODE_BACK) {
            if (drawer.isDrawerOpen(GravityCompat.START)) {
                drawer.closeDrawer(GravityCompat.START);
            } else {
                finish();
            }
}

早于API 5

 public boolean onKeyDown(int keycode, KeyEvent event) {
        if (keycode == KeyEvent.KEYCODE_BACK) {
            if (drawer.isDrawerOpen(GravityCompat.START)) {
                drawer.closeDrawer(GravityCompat.START);
            } else {
                finish();
            }
        }
        return super.onKeyDown(keycode, event);
    }

让我知道它是否适合你

答案 1 :(得分:1)

this.finishAffinity();

中删除 onBackPressed()

示例代码

@Override
    public void onBackPressed() {
        DrawerLayout drawer = findViewById(R.id.drawer_layout);

        if (drawer.isDrawerOpen(GravityCompat.START)) {
            drawer.closeDrawer(GravityCompat.START);
        } else {
            super.onBackPressed();
            finish();

        }
    }