Как выйти при двойном нажатии на кнопку с показом снэк-бара диалога выхода? - PullRequest
0 голосов
/ 27 февраля 2019

Я хотел сделать диалоговое окно закусочной при двойном нажатии, чтобы выйти ... (Java)

Запрошено с этими

  1. 1-го числавремя назад нажато показать диалог «снова нажать для выхода» в течение 2 секунд

  2. При повторном нажатии показать «Вы хотите выйти?» с кнопкой подтверждения в течение 2 секунд

Как показано ниже -

enter image description here

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Вот решение для вас -

private final long DOUBLE_PRESS_BACK_TO_EXIT_TIME = 2000;
boolean doubleBackPressed = false;

    @Override
    public void onBackPressed() {
        // todo: show the snackbar here. 
        this.doubleBackPressed = true;
        utils.showToastLong(getString(R.string.press_again_to_exit));
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                doubleBackPressed = false;
                // todo: hide the snackbar here. 
            }
        }, DOUBLE_PRESS_BACK_TO_EXIT_TIME);

    }

Чтобы настроить снэк-бар, вы можете перейти по этой ссылке

0 голосов
/ 27 февраля 2019

Создать идентификатор для вашего макета в Activity_main

CoordinatorLayout coordinatorLayout;

@Override
public void onBackPressed() {     
    coordinatorLayout= (CoordinatorLayout) findViewById(R.id.coordinatorLayout);
if (!doubleBackToExitPressedOnce) {
            this.doubleBackToExitPressedOnce = true;
            Snackbar.make(coordinatorLayout, "Do you really want to exit?", Snackbar.LENGTH_LONG)
                .setAction("YES", new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    //button action here
                    System.exit(0);
                }
            }).setActionTextColor(Color.YELLOW)
              .show();
            new Handler().postDelayed(new Runnable() {

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

Надеюсь, это поможет

...