Операция Android OnBackPressed Call два раза - PullRequest
0 голосов
/ 16 декабря 2018

У меня возникла проблема в приложении, когда я щелкаю по действию, вызванному два раза, когда моя идея приложения такова: 3 действия (LoginActivity, MainMenuActivity и CashActivity) пользователь выполнил вход из LoginActivity в CashActivity, но при нажатии назад происходит MainMenuActivity, а при возврате с MainMenuActivity происходит LoginActivity, когда я возвращаюсь с LoginActivity, вызывается LoginActivity два раза.

Мой код:

@Override
public void onBackPressed() {
    Intent intent = new Intent(this, MainMenuActivity.class);
    finish();
    this.startActivity(intent);
}

этот код вызывается во всех этих действиях.

Ответы [ 3 ]

0 голосов
/ 16 декабря 2018

Вы можете проверить PressedTime.И Есть множество способов проверить на BackPress.

нажатие на кнопку «назад», дважды для выхода из деятельности

long backPressedTime;

@Override
public void onBackPressed() {
    if (backPressedTime + 1000 > System.currentTimeMillis()){
        super.onBackPressed();
        //Todo

    }
    else{
        Toast.makeText(getBaseContext(), "Double Back Pressed", Toast.LENGTH_SHORT).show();
    }
    backPressedTime = System.currentTimeMillis();
}
0 голосов
/ 16 декабря 2018

Вы можете использовать этот следующий код при нажатии на кнопку "Назад" и показать Snackbar ...

    @Override
    public void onBackPressed() 
    {
        if (exit)
        // Any practical instruction can be written : 
        //Intent intent = new Intent(LoginActivity.this, LoginActivity.class);
        //startActivity(intent);

            YourActivity.this.finish();
        else 
        {
            Snackbar snkbr = Snackbar
                    .make(crdLayout, "Click once again to exit", Snackbar.LENGTH_LONG)
                    .setActionTextColor(Color.WHITE);
            View snackBarView = snkbr.getView();
            snackBarView.setBackgroundColor(ContextCompat.getColor(Context(), R.color.snackBarColor));
            snkbr.show();
            exit = true;
            new Handler().postDelayed(new Runnable() 
            {
                @Override
                public void run()
                {
                    exit = false;
                }
            }, 3 * 1000);
        }
    }
0 голосов
/ 16 декабря 2018

Когда вы переходите от входа в систему, завершите вход в систему.что проблема.я думаю

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...