我希望用户确认关闭我的应用。我在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。那应该是要解决的主要问题,但我还不知道究竟是怎么回事?
答案 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();
}