我的应用程序包含2个主要活动和1个辅助活动(登录弹出窗口)
活动是PreLogin活动,其中用户有应用程序信息和其他一些东西和登录按钮。当他按下该按钮时,新活动将作为弹出窗口启动。如果他点击那里,该活动将被关闭,用户将返回上一个活动。
活动是PostLogin,我实现了这个功能:
我的代码:
public void onBackPressed() {
if (doubleBackToExitPressedOnce) {
super.onBackPressed();
finish();
return;
}
this.doubleBackToExitPressedOnce = true;
final View coordinatorLayoutView = findViewById(R.id.coordinator);
Snackbar.make(coordinatorLayoutView, "Press again to exit.", Snackbar.LENGTH_LONG).show();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
doubleBackToExitPressedOnce=false;
}
}, 5000);
}
此代码应关闭我的应用程序,但问题是按下按钮2次,灰色屏幕显示,用户需要再次单击后退按钮退出应用程序。
我很确定问题在某种程度上与我的Prelogin活动有关,因为当我在我的Prelogin活动noHistory
上尝试onBackpressed()
时,我的工作就像魅力一样,但我无法使用这种方法因为我需要我的Prelogin上的历史记录,因此返回按钮适用于Login Popup。
答案 0 :(得分:1)
您可以使用下面的简单代码来实现这一目标。
@Override
public void onBackPressed() {
if (back_pressed + 2000 > System.currentTimeMillis()) {
//Intent intent = new Intent(Intent.ACTION_MAIN);
//intent.addCategory(Intent.CATEGORY_HOME);
//intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//startActivity(intent);
super.onBackPressed();
} else {
Toast.makeText(this, "Press the back button once again to close the application.", Toast.LENGTH_SHORT).show();
back_pressed = System.currentTimeMillis();
}
}
此处2000
为2 Seconds
,您可以将其更改为您喜欢的任何值。如果再次在2 seconds
内按下后退按钮,则只会返回。
如果需要,您可以拨打上一个活动的Intent
,也可以删除已注释的Intent
代码以返回Home
屏幕。
答案 1 :(得分:0)
简单地说完成();在startActivity(intent)之后;在第一个活动!
答案 2 :(得分:0)
在启动意图后,在第一个活动(登录活动)中调用finish()方法。