我发现了很多关于如何保存对话框状态的主题,例如使用Bundle实例。 但是,我似乎无法找到如何“正确”重置对话框。
考虑这个示例自定义对话框(XML布局带有ID为“input_text”的EditText):
public class CustomDialog extends Dialog {
public CustomDialog (Context context) { super (context); }
protected onCreate (Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView(R.layout.input_query);
EditText txt = (EditText) findViewById(R.id.input_text);
// Consider that I'm declaring here the use of listeners
// in order to retrieve input text.
}
}
在主Activity中单击按钮时,我弹出此对话框。第二次执行此操作时,我的EditText包含上一个实例的输入。
现在,我知道我可以重置此EditText的内容,但我想知道是否存在一种通用的,已经存在的方法来执行此操作,对话框范围内。例如,如果我有一个更复杂的对话框,我希望每次实例化该对象时它都有“默认”值。我想删除对super.onCreate(savedInstanceState);
的调用可以解决问题,但事实并非如此。
对不起,如果这是一个愚蠢的问题(或者如果已经解决了......我没有找到它)...任何帮助表示赞赏。非常感谢!
答案 0 :(得分:5)
通常,您应该覆盖活动的onCreateDialog
和onPrepareDialog
方法。
第一次创建对话框时,会调用onCreateDialog
,因此您应该使用此方法创建对话框。要初始化/更新对话框覆盖onPrepareDialog
的内容,在显示对话框之前始终会调用它。
答案 1 :(得分:1)
尝试使用与showDialog()相反的方法 - removeDialog()就是那个方法。我遇到了与你相似的问题。我展示的每个对话都是来自第一个实例的数据。当我开始使用removeDialog()时,内容正在正确更新。