1

我发现了很多关于如何保存对话框状态的主题,例如使用 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);可以解决问题,但事实并非如此。

对不起,如果这是一个愚蠢的问题(或者如果已经解决......我没有找到它)......感谢任何帮助。非常感谢!

4

2 回答 2

5

通常你应该覆盖活动的onCreateDialogonPrepareDialog方法。

第一次创建对话框onCreateDialog被调用,所以你应该在这个方法中创建你的对话框。要初始化/更新对话框覆盖的内容onPrepareDialog,它总是在显示对话框之前调用。

于 2011-09-20T11:41:16.380 回答
1

尝试使用与 showDialog() 相反的方法 - removeDialog() 就是那个方法。我遇到了和你类似的问题。我显示的每个对话框都包含来自第一个实例的数据。当我开始使用 removeDialog() 时,内容正在正确更新。

于 2011-09-20T11:33:03.590 回答