У меня проблема в моем приложении, когда я дважды щелкаю действие, вызываемое дважды, когда моя идея приложения: 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);
}
this code called in all these activities .
Когда вы переходите от входа к наличным, завершите вход в систему. вот в чём проблема. я думаю
Вы можете проверить PressedTime. И есть множество способов проверить onBackPressed.
дважды нажав кнопку «Назад», чтобы выйти из действия
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();
}
Вы можете использовать этот следующий код, нажав на обратную кнопку и отобразив 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);
}
}