дважды нажмите назад, чтобы закрыть приложение с тостом в макете - PullRequest
1 голос
/ 21 января 2020

В моей основной деятельности есть макет ящика, и, глядя на this , я попытался добавить функцию, которая предлагает пользователям дважды нажать кнопку "Назад", чтобы закрыть приложение

, но в моем случае при закрытии DrawerLayout показывается тостовое сообщение, но я не хочу, чтобы вместо этого я хотел показать его, когда активность свободна.

 boolean doubleBackToExitPressedOnce = false;

    @Override
    public void onBackPressed() {
        DrawerLayout drawer = findViewById(R.id.drawer_layout);
        if (drawer.isDrawerOpen(GravityCompat.START)) {
            drawer.closeDrawer(GravityCompat.START);}
//        } else {
//            super.onBackPressed();
//        }
        if (doubleBackToExitPressedOnce) {
            super.onBackPressed();
            return;
        }

        this.doubleBackToExitPressedOnce = true;
        Toast.makeText(this, "Please click BACK again to exit", Toast.LENGTH_SHORT).show();

        new Handler().postDelayed(new Runnable() {

            @Override
            public void run() {
                doubleBackToExitPressedOnce=false;
            }
        }, 2000);
    }

Ответы [ 2 ]

2 голосов
/ 21 января 2020

Если ваш ящик является открытым , тогда закройте его и return, чтобы избежать toast

if (drawer.isDrawerOpen(GravityCompat.START)) {
    drawer.closeDrawer(GravityCompat.START);

    return;
} 
0 голосов
/ 21 января 2020

Если ваш ящик открыт, сначала закройте, затем сделайте логи c

@Override
public void onBackPressed() {
    DrawerLayout drawer = findViewById(R.id.drawer_layout);
    if (drawer.isDrawerOpen(GravityCompat.START)) {
        drawer.closeDrawer(GravityCompat.START);
    } else {
        if (doubleBackToExitPressedOnce) {
            super.onBackPressed();
            return;
        }
        doubleBackToExitPressedOnce = true;
        Toast.makeText(this, "Please click BACK again to exit", Toast.LENGTH_SHORT).show();
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                doubleBackToExitPressedOnce = false;
            }
        }, 2000);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...