确认仅在 MainAcitity 中按下后退时关闭应用程序?
Confirm closing the app on back pressed ONLY in MainAcitity?
我希望用户确认关闭我的应用程序。我在 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();
}
}
在其他 classes 中我使用这个:
@Override public void onBackPressed() {
if (!mWebView.onBackPressed()) { return; }
// ...
super.onBackPressed(); }
现在我在每个 class 中都得到了确认事件,但我只希望它出现在我的 MainActivity 中。我该怎么做?
注意:我必须在其他 classes 中扩展我的 MainActivity。这应该是要解决的主要问题,但我仍然不知道具体如何?
将其他class改为
@Override
public void onBackPressed() {
if (mWebView.canGoBack()) { return; }
// ...
super.onBackPressed();
}
试试用这个
在你的主要 activity
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();
}
@Vala,如果您将片段添加到 Activty
,那么您可以使用 FragmentManager
的 BackSackEntryCount
,如下所示。
int backStackCount = getSupportFragmentManager().getBackStackEntryCount();
if (backStackCount == 1) {
Toast.makeText(this, "Press back again to close this app", Toast.LENGTH_LONG).show();
}
如果backstackcount
为1,则表示再次按下后退按钮时,剩余的碎片将从后退堆栈中弹出,应用程序将退出。
我希望用户确认关闭我的应用程序。我在 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();
}
}
在其他 classes 中我使用这个:
@Override public void onBackPressed() {
if (!mWebView.onBackPressed()) { return; }
// ...
super.onBackPressed(); }
现在我在每个 class 中都得到了确认事件,但我只希望它出现在我的 MainActivity 中。我该怎么做?
注意:我必须在其他 classes 中扩展我的 MainActivity。这应该是要解决的主要问题,但我仍然不知道具体如何?
将其他class改为
@Override
public void onBackPressed() {
if (mWebView.canGoBack()) { return; }
// ...
super.onBackPressed();
}
试试用这个 在你的主要 activity
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();
}
@Vala,如果您将片段添加到 Activty
,那么您可以使用 FragmentManager
的 BackSackEntryCount
,如下所示。
int backStackCount = getSupportFragmentManager().getBackStackEntryCount();
if (backStackCount == 1) {
Toast.makeText(this, "Press back again to close this app", Toast.LENGTH_LONG).show();
}
如果backstackcount
为1,则表示再次按下后退按钮时,剩余的碎片将从后退堆栈中弹出,应用程序将退出。