我想知道当用户在警报对话框上按下“是”并且此对话框被关闭时,该事件是否执行用户所在活动的 onResume 方法。
因为我有一个“清理”按钮,询问用户他是否真的确定清理表单(活动)的所有字段,以便用空字段重绘活动。表单是动态创建的,所以我不不知道 GUI 中的元素将它们设置为空...
对不起,我的英语不好!!
谢谢和问候!
我想知道当用户在警报对话框上按下“是”并且此对话框被关闭时,该事件是否执行用户所在活动的 onResume 方法。
因为我有一个“清理”按钮,询问用户他是否真的确定清理表单(活动)的所有字段,以便用空字段重绘活动。表单是动态创建的,所以我不不知道 GUI 中的元素将它们设置为空...
对不起,我的英语不好!!
谢谢和问候!
不确定这是否是应该采取的方法,但你应该能够做我认为你要求的事情。如果出于某种原因,这是您想要实现的目标。
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() 调用即可调用主要活动的方法;但是,我确实想直接回答被问到的问题。
要查看是否调用了某个方法,您可以在该方法处放置一个断点onResume()
,以查看会发生什么。如果您不熟悉 Acitvity 生命周期,那么这样做将帮助您熟悉它并阅读提供的文档。
现在,我认为您不应该layout
仅仅为了清除一些Views
. 在我看来,setText()
当用户单击“确定”或其他任何内容时,通过使用或其他方法重置所有字段会更有效。如果需要重绘某些内容,可以使用invalidate()Views
我也推荐观看
Activity LifeCycle <--理解很重要
AFAIK 这是不可能的,因为为了显示对话框,活动已经通过了 onResume 状态。查看以下页面,了解有关 Android 应用程序生命周期的更多信息(它确实帮助我更好地理解):
如果不确定何时调用 onResume,请在 onResume 方法中添加日志。