Java 确认仅在Mainacity中按back关闭应用程序?
我希望用户确认关闭我的应用程序。我在主要活动中使用以下代码:Java 确认仅在Mainacity中按back关闭应用程序?,java,android,android-studio,android-studio-2.0,Java,Android,Android Studio,Android Studio 2.0,我希望用户确认关闭我的应用程序。我在主要活动中使用以下代码: @Override public void onBackPressed() { if (this.lastBackPressTime < System.currentTimeMillis() - 4000) { toast = Toast.makeText(this, "Press back again to close this app", Toast.LENGTH_LONG); toa
@Override
public void onBackPressed() {
if (this.lastBackPressTime < System.currentTimeMillis() - 4000) {
toast = Toast.makeText(this, "Press back again to close this app", Toast.LENGTH_LONG);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
this.lastBackPressTime = System.currentTimeMillis();
} else {
if (toast != null) {
toast.cancel();
}
super.onBackPressed();
}
}
现在我在每节课上都会得到确认事件,但我只想在我的主要活动中得到它。我该怎么做
注:我必须在其他课程中扩展我的主要活动。这应该是要解决的主要问题,但我仍然不知道具体如何解决?将其他类更改为
@Override
public void onBackPressed() {
if (mWebView.canGoBack()) { return; }
// ...
super.onBackPressed();
}
试试这个
在您的主要活动中
private boolean exit = false;
@Override
public void onBackPressed()
{
if (exit) {
finish(); // finish activity
} else {
Toast.makeText(this, "Press Back again to Exit.",
Toast.LENGTH_SHORT).show();
exit = true;
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
exit = false;
}
}, 3 * 1000);
}
}
像这样试试
Activity activity = this;
if (activity instanceof MainActivity) {
if (this.lastBackPressTime < System.currentTimeMillis() - 4000) {
Toast toast = Toast.makeText(this, "Press back again to close this app", Toast.LENGTH_LONG);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
this.lastBackPressTime = System.currentTimeMillis();
} else {
if (toast != null) {
toast.cancel();
}
super.onBackPressed();
}
} else {
super.onBackPressed();
}
Activity=this;
if(主活动的活动实例){
if(this.lastBackPressTime@Vala,如果您将片段添加到活动中
,则可以使用碎片管理器的BackackEntryCount
,如下所示
int backStackCount = getSupportFragmentManager().getBackStackEntryCount();
if (backStackCount == 1) {
Toast.makeText(this, "Press back again to close this app", Toast.LENGTH_LONG).show();
}
如果backstackcount
为1,则意味着再次按下后退按钮时,剩余的frgament将从后堆栈中弹出,并且应用程序将退出。您不应该为此使用Handler。那么这是一个糟糕的解决方案吗?@Vaia在我看来是正确的,您甚至可以尝试一下,看看,,,,当用户在mainactivity中并按下后退按钮时,会出现一个toast提示,询问如果他真的想再按一次后退exit@Vaia您是否在上一个活动中添加了它,用户可以通过按backNo关闭应用程序,仅在MainActivity类中什么是activityObject
?希望这会有所帮助@Vaia@Vaia解决问题了吗?我看不出你的答案@现在呢@VAIAW有了这个密码,我根本无法回到其他活动中all@Vala,片段是添加到您的活动容器中,还是在主活动之上调用另一个活动?
int backStackCount = getSupportFragmentManager().getBackStackEntryCount();
if (backStackCount == 1) {
Toast.makeText(this, "Press back again to close this app", Toast.LENGTH_LONG).show();
}