确认仅在MainAcitity中按下关闭应用程序?

时间:2016-04-15 11:39:03

标签: java android android-studio android-studio-2.0

我希望用户确认关闭我的应用。我在MainActivity中使用以下代码:

@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.onBackPressed()) { return; }
    // ...
    super.onBackPressed(); }

现在我在每个课程中都得到了确认事件,但我只想在我的MainActivity中使用它。我怎么能这样做?

注意:我必须在其他类中扩展我的MainActivity。那应该是要解决的主要问题,但我还不知道究竟是怎么回事?

4 个答案:

答案 0 :(得分:0)

尝试使用此功能 在您的主要活动中

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

    }
}

答案 1 :(得分:0)

试试这个

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

答案 2 :(得分:0)

@Vala,如果您将片段添加到Activty,那么您可以使用BackSackEntryCount FragmentManager,如下所示。

  int backStackCount = getSupportFragmentManager().getBackStackEntryCount();
                if (backStackCount == 1) {
                    Toast.makeText(this, "Press back again to close this app", Toast.LENGTH_LONG).show();
                }

如果backstackcount是一个,则表示在再次按下后退按钮时,剩余的frgament将从后面的堆栈弹出,应用程序将退出。

答案 3 :(得分:-1)

将其他课改为

@Override 
public void onBackPressed() {
   if (mWebView.canGoBack()) { return; }
            // ...
   super.onBackPressed(); 
}