Onbackpressed 关闭应用程序登录后不关闭应用程序
Onbackpressed close app not closing app after login
我的应用程序包含 2 个主要 activity 和 1 个次要 activity(登录弹出窗口)
Activity 是 PreLogin activity,其中用户有应用程序信息和一些其他内容以及用于登录的按钮。当他按下该按钮时,new activity 将作为弹出窗口启动。如果他点击返回那里,activity 将关闭,用户将返回到之前的 activity。
Activity 是 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 activity 有某种联系,因为当我尝试 noHistory
我的 Prelogin activity onBackpressed()
非常有效,但我可以' 使用该方法,因为我需要在我的 Prelogin 上有历史记录,所以后退按钮适用于 Login Popup。
您只需使用下面的简单代码即可实现。
@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
内再次按下后退按钮,则只有它会返回。
如果需要,您可以调用前面activity 的Intent
,或者您可以删除注释的Intent
代码以返回Home
屏幕。
简单的说finish();开始后Activity(意图);在第一个 Activity!
在启动 Intent 后的第一个 activity(登录 activity)中调用 finish() 方法。
我的应用程序包含 2 个主要 activity 和 1 个次要 activity(登录弹出窗口)
Activity 是 PreLogin activity,其中用户有应用程序信息和一些其他内容以及用于登录的按钮。当他按下该按钮时,new activity 将作为弹出窗口启动。如果他点击返回那里,activity 将关闭,用户将返回到之前的 activity。
Activity 是 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 activity 有某种联系,因为当我尝试 noHistory
我的 Prelogin activity onBackpressed()
非常有效,但我可以' 使用该方法,因为我需要在我的 Prelogin 上有历史记录,所以后退按钮适用于 Login Popup。
您只需使用下面的简单代码即可实现。
@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
内再次按下后退按钮,则只有它会返回。
如果需要,您可以调用前面activity 的Intent
,或者您可以删除注释的Intent
代码以返回Home
屏幕。
简单的说finish();开始后Activity(意图);在第一个 Activity!
在启动 Intent 后的第一个 activity(登录 activity)中调用 finish() 方法。