Android 从对话框 2 设置对话框 1 中的文本?
Android set Text in Dialog 1 from Dialog 2?
我有 2 个对话框。一个是普通输入对话框,第二个是 DatePickerDialog。我想要做的是将其中一个 TextView 的内容设置为 DatePickerDialog 中选择的日期的第一个对话框,如下所示:
对话 1:
public void showEventDialog() {
dialog = new Dialog(MainActivity.context);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.post_event_dialog);
dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
// VIEWS:
...
dateText = (TextView) dialog.findViewById(R.id.eventdate);
dateText.setTypeface(MainActivity.textMain);
dateText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showDateDialog();
}
});
...
dialog.show();
}
和对话 2:
public void showDateDialog() {
Calendar newCalendar = Calendar.getInstance();
fromDatePickerDialog = new DatePickerDialog(MainActivity.context, new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
dateText.setText("Test");
}
}, newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH));
fromDatePickerDialog.show();
}
但是,当我尝试在第一个对话框中设置 TextView 的文本时,出现 NullPointer 异常。我该如何正确地做到这一点?我知道这一定是一个非常微不足道的问题,但我根本无法理解它。
谢谢
因为,在第二个对话框中没有 TextView dateText
的引用,因为它始终保持 NULL(它仅在从第一个对话框初始化后可用)
只需将您的 dateText
引用传递给 showDialog()
赞,
public void showDateDialog(final TextView dateText) {
Calendar newCalendar = Calendar.getInstance();
fromDatePickerDialog = new DatePickerDialog(MainActivity.context, new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
dateText.setText("Test");
}
}, newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH));
fromDatePickerDialog.show();
}
然后像这样打电话,
showDateDialog(dateText);
我有 2 个对话框。一个是普通输入对话框,第二个是 DatePickerDialog。我想要做的是将其中一个 TextView 的内容设置为 DatePickerDialog 中选择的日期的第一个对话框,如下所示:
对话 1:
public void showEventDialog() {
dialog = new Dialog(MainActivity.context);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.post_event_dialog);
dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
// VIEWS:
...
dateText = (TextView) dialog.findViewById(R.id.eventdate);
dateText.setTypeface(MainActivity.textMain);
dateText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showDateDialog();
}
});
...
dialog.show();
}
和对话 2:
public void showDateDialog() {
Calendar newCalendar = Calendar.getInstance();
fromDatePickerDialog = new DatePickerDialog(MainActivity.context, new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
dateText.setText("Test");
}
}, newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH));
fromDatePickerDialog.show();
}
但是,当我尝试在第一个对话框中设置 TextView 的文本时,出现 NullPointer 异常。我该如何正确地做到这一点?我知道这一定是一个非常微不足道的问题,但我根本无法理解它。 谢谢
因为,在第二个对话框中没有 TextView dateText
的引用,因为它始终保持 NULL(它仅在从第一个对话框初始化后可用)
只需将您的 dateText
引用传递给 showDialog()
赞,
public void showDateDialog(final TextView dateText) {
Calendar newCalendar = Calendar.getInstance();
fromDatePickerDialog = new DatePickerDialog(MainActivity.context, new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
dateText.setText("Test");
}
}, newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH));
fromDatePickerDialog.show();
}
然后像这样打电话,
showDateDialog(dateText);