我想知道当用户在警告对话框上按下“是”,并且这个人被解雇,该事件执行用户所在活动的onResume方法。在Android中解除警报后调用onResume方法?
因为我有一个“清洁“按钮询问用户是否确实清理了表单(活动)的所有字段,以便用空字段重新绘制活动。表单是动态创建的,因此我不知道元素在GUI中设置它们为空...
对不起,我的英语不好!
感谢和问候!
我想知道当用户在警告对话框上按下“是”,并且这个人被解雇,该事件执行用户所在活动的onResume方法。在Android中解除警报后调用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();
}
你真要打电话给你清洁功能,而不是像一个成功的生命周期调用任何而做的一个关于失败罢了。
解决此问题的另一种可能方法是使用标志将当前活动重新置于前面。
Intent intent = new Intent(this, CurrentlyRunningActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);
这也将提供一种无需直接引用的onResume()调用在你的主要活动来调用,如指出的是不恰当的做法;但是,我确实想直接回答问题。
手动调用'onResume'是绝对不行的* – 2014-08-21 06:58:08
AFAIK这是不可能的,因为为了显示对话框,活动将已经通过onResume状态。看看下面的页面了解更多关于生命周期上的Android应用程序(它真的帮助我更好地理解):
那么,你所说的是,当屏幕上显示警报时,它不会导致活动在后台?它仍然在前景? – 2013-04-11 14:46:08
@alois。wirkes这是一个很好的问题,我不确定。不过,我认为你应该看看codeMagic的答案。你可能不应该重绘布局来清除东西,但应该使用'setText()'。只要有对话框的“是”按钮,就可以调用一种方法来清理你想要的东西。 – TronicZomB 2013-04-11 14:54:31
如果你不知道当的onResume被调用时,添加日志到onResume方法。
要查看一个方法是否被调用,您可以在方法onResume()
处放一个断点来查看会发生什么。如果您不熟悉Acitvity生命周期,那么执行此操作将帮助您熟悉它并阅读所提供的文档。
现在,我认为你不应该重绘整个layout
只是为了清除一些Views
。在我看来,使用setText()
或其他方法重置所有字段的效率会更高,当用户点击“OK”或其他任何内容时,无论您需要什么,都可以使用setText()
或其他方法。您可以使用invalidate()如果你需要重新绘制某些Views
我还建议看
Google I/O-Turbo Charge Your UI
Activity LifeCycle < - 非常重要的,了解
如果你想检测用户什么时候做了某些事情,你可以使用布尔值,在开始时为false,在正确点击按钮时为true。 – 2013-04-11 14:37:47