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();
                }