我想知道当用户在警告对话框中按下“是”并且此对话框被取消时,该事件是否执行用户所在活动的onResume方法。
因为我有一个“清洁”按钮,询问用户是否确实要清除表单的所有字段(活动),以便用空字段重绘活动。表单是动态创建的,所以我不知道GUI中的元素将它们设置为空...
抱歉我的英语不好!!
谢谢和问候!
答案 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
我还建议观看
Google I/O-Turbo Charge Your UI
Activity LifeCycle< - 非常重要的理解
答案 2 :(得分:0)
AFAIK这是不可能的,因为为了显示对话框,活动已经传递了onResume状态。有关Android应用程序生命周期的更多信息,请查看以下页面(它确实帮助我更好地理解):
答案 3 :(得分:0)
如果您不确定何时调用onResume,请在onResume方法中添加日志。