10

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

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

对不起,我的英语不好!!

谢谢和问候!

4

4 回答 4

20

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

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

你真的会想要调用你的 clean 函数,而不是像生命周期调用那样的成功,而对失败什么都不做。

解决此问题的另一种潜在方法是使用标志将当前活动带回前面。

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

正如所指出的那样,这也将提供一种无需直接引用 onResume() 调用即可调用主要活动的方法;但是,我确实想直接回答被问到的问题。

于 2013-04-11T14:50:38.883 回答
1

要查看是否调用了某个方法,您可以在该方法处放置一个断点onResume(),以查看会发生什么。如果您不熟悉 Acitvity 生命周期,那么这样做将帮助您熟悉它并阅读提供的文档。

现在,我认为您不应该layout仅仅为了清除一些Views. 在我看来,setText()当用户单击“确定”或其他任何内容时,通过使用或其他方法重置所有字段会更有效。如果需要重绘某些内容,可以使用invalidate()Views

我也推荐观看

Google I/O-Turbo 为您的 UI 充电

Activity LifeCycle <--理解很重要

于 2013-04-11T14:45:35.817 回答
0

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

应用生命周期

于 2013-04-11T14:38:18.123 回答
0

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

于 2013-04-11T14:42:15.470 回答