我有一个弹出对话框,用户输入数据,包括日期。要选择日期,我有一个按钮可以打开另一个带日期选择器的窗口。当我选择日期并返回第一个对话框时,除非我再次打开日期选择器,否则不会更改带日期的文本字段。从日期选择器窗口返回后,如何立即刷新或更新第一个对话框?
以下是第一个对话框的代码:
public void addEntry(View view) {
final Dialog d = new Dialog(this);
d.setContentView(R.layout.dialog);
d.setTitle("Add Entry");
d.setCancelable(true);
d.show();
...
chooseDate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String str = selectDate();
date.setText(str);
}
});
}
以下是您选择日期的第二个窗口的代码:
public String selectDate(){
final Dialog datePicker = new Dialog(this);
datePicker.setContentView(R.layout.choose_date);
datePicker.setTitle("Choose Date...");
datePicker.setCancelable(true);
datePicker.show();
Button selectFinalDate = (Button) datePicker.findViewById(R.id.selectDate);
final DatePicker dp = (DatePicker) datePicker.findViewById(R.id.datePicker1);
selectFinalDate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
strDateTime = (dp.getMonth() + 1) + "/" + dp.getDayOfMonth() + "/" + dp.getYear();
datePicker.dismiss();
}
});
return strDateTime;
};
谢谢!
答案 0 :(得分:0)
将click.setText(datechoosen)置于第二个对话框中,然后单击它将设置textView或按钮或在第一个对话框中显示日期的任何视图。如果在第二个对话框中无法访问它,请将其设置为静态,但在访问它之前检查它是否为空。
答案 1 :(得分:0)
未经测试,但应该有效。
...
date.setText(str);
view.invalidate(); // the view that you are showing in the dialog
...
所以在你的代码中,你更新了这个:
/**
* global variable for your dialog view
*/
View view =null;
// in your addEntry(View view)
...
Dialog d = new Dialog(this);
view = LayoutInflater.from(this).inflate(R.layout.dialog, null);
d.setContentView(view);
...
// selectDate()
...
date.setText(str);
view.invalidate(); // the view that you are showing in the dialog
...
请参阅此answer