在Android中取消警报后调用onResume方法?

时间:2013-04-11 14:35:53

标签: android alertdialog onresume

我想知道当用户在警告对话框中按下“是”并且此对话框被取消时,该事件是否执行用户所在活动的onResume方法。

因为我有一个“清洁”按钮,询问用户是否确实要清除表单的所有字段(活动),以便用空字段重绘活动。表单是动态创建的,所以我不知道GUI中的元素将它们设置为空...

抱歉我的英语不好!!

谢谢和问候!

4 个答案:

答案 0 :(得分:16)

不确定这是否应该采取的方法,但您应该能够做我认为您要求的方法。如果出于某种原因,这就是你想要达到的目的。

AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage("Do you want to clean?")
      .setPositiveButton("Yes", new DialogInterface.OnClickListener()
      {
        public void onClick(DialogInterface dialog, int id)
        {
          dialog.dismiss();
          ((ActivityName) appContext).onResume();
        }
      })
      .setNegativeButton("No", new DialogInterface.OnClickListener()
      {
        public void onClick(DialogInterface dialog, int id)
        {
          dialog.dismiss();
        }
      });
    builder.create().show();
}

你真的希望在失败时不做任何事情的情况下,在成功的生命周期调用之类的任何事情上调用你的清除函数而不是

另一种可能的方法是使用标志将当前活动带回到前面。

Intent intent = new Intent(this, CurrentlyRunningActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);

这也提供了一种在不直接引用onResume()调用的情况下调用主活动的方法,正如所指出的那样,这不是合适的方法;但是,我确实想直接回答问题。

答案 1 :(得分:1)

要查看是否调用了方法,可以在方法onResume()上放置断点,以查看发生的情况。如果您不熟悉Acitvity Lifecycle,那么这样做可以帮助您熟悉它并阅读提供的文档。

现在,我不认为你应该重新绘制整个layout只是为了清除一些Views。在我看来,只需在用户点击“确定”或其他任何内容时使用setText()或其他方法重置所有字段,效率会更高效。如果您需要重新绘制某些Views

,可以使用invalidate()

我还建议观看

Google I/O-Turbo Charge Your UI

Activity LifeCycle< - 非常重要的理解

答案 2 :(得分:0)

AFAIK这是不可能的,因为为了显示对话框,活动已经传递了onResume状态。有关Android应用程序生命周期的更多信息,请查看以下页面(它确实帮助我更好地理解):

App lifecycle

答案 3 :(得分:0)

如果您不确定何时调用onResume,请在onResume方法中添加日志。