3

编辑和解决(下)

当用户离开活动时,我需要进行最后一次检查。
如果这次检查的结果不成功,我需要不让他出去。

我需要一种这样的:

@Override
protected void onPause() {
    if (comprobations == true){
        super.onPause();
        } else {
            NOT EXIT!!
        }
}

看起来很容易:p,但我试过但没有运行。

任何人都可以帮助我吗?

坦克斯

解决方案:

感谢大家的快速解答!
他们每个人都帮助了我,我学到了一些新东西。

我已经尝试过这个onBackPressed()方法,这就是我想要的。我知道用户仍然可以通过按 Home 键和其他方式退出 App,但我只是想防止用户在返回主菜单时认为我的 App 的配置还可以;如果他们想从应用程序中出去,没关系。
所以我会做这样的事情:

@Override
public void onBackPressed() {
    Log.d(LOGTAG, "onBackPressed");
    if (COMPROBATIONS() == true){
        super.onBackPressed();
    } else {
        SHOW WARNING!
    }
    return;
}


感谢大家的帮助。
玩得开心。

4

4 回答 4

5

您无法阻止用户离开您的活动。一旦调用了 onPause 方法,应用程序就会进入后台,您无法阻止它。

如果您真的想在用户离开您的活动时做某事,可以通过覆盖 ononBackPressed()方法来覆盖后退按钮并让它执行一些其他操作。但是,用户仍然可以通过多种方式离开(例如按下主页按钮)。

于 2012-12-20T15:56:51.167 回答
4

简单的答案是“你不能这样做”或“这是不可能的”。您的应用程序不能阻止用户关闭它或系统在它(系统)资源不足时杀死它。

而且,如果您要与一些内置应用程序(例如三星的设置)进行比较,请记住那些“特殊”应用程序可以访问操作系统的内部,并且与您的应用程序不在同一级别上运行。

于 2012-12-20T15:51:49.367 回答
0

您不能这样做,因为调用它们的是 Android。

要么在完成()活动之前进行检查,要么捕获后退键。

if (!comprobations){
     this.finish():
}

或者:

public boolean onKeyDown(int keyCode, KeyEvent event){

    if(keyCode == KeyEvent.KEYCODE_BACK) {
        if (!comprobations){
            this.finish():
            return true;
        }

        return false;

    }
}
于 2012-12-20T15:52:35.663 回答
0

这可以通过覆盖后退按钮来实现。像这样做 :

public boolean onKeyDown(int keyCode, KeyEvent event) {

if(keyCode==KeyEvent.KEYCODE_BACK)
{
  if (comprobations == true){
          finish();
       } else {
          NOT EXIT!!
       }
 }
}
于 2012-12-20T15:54:11.817 回答