Android 如何更改正在运行的AlertDialog的文本
单击从CalendarPickerFragment中选择日期的按钮后,如何更改Android 如何更改正在运行的AlertDialog的文本,android,android-edittext,android-alertdialog,Android,Android Edittext,Android Alertdialog,单击从CalendarPickerFragment中选择日期的按钮后,如何更改AlertDialog上文本的当前字符串 这是警报对话框 public class FragmentInicio extends Fragment{ private static String date; public void addDate(){ View view = (LayoutInflater.from(getActivity())).inflate
AlertDialog
上文本的当前字符串
这是警报对话框
public class FragmentInicio extends Fragment{
private static String date;
public void addDate(){
View view = (LayoutInflater.from(getActivity())).inflate(R.layout.alert_dialog,null);
AlertDialog.Builder alertDialog = new AlertDialog.Builder(getActivity());
alertDialog.setView(view);
final TextView date_Text = view.findViewById(R.id.dateEditText);
final ImageButton dateButton= view.findViewById(R.id.tareaFechaButton);
dateButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
CalendarPickerFragment newFragment = new CalendarPickerFragment();
newFragment.show(getFragmentManager(), "DatePicker");
}
});
date_Text.setText(date);
alertDialog.setTitle("New Date");
alertDialog.setCancelable(true).setPositiveButton("Save", new
DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//Some stuff
}
});
alertDialog.setNegativeButton("Cancel", new
DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
Dialog dialog = alertDialog.create();
dialog.show();
}
public static void displaydate(int year, int monthOfYear, int dayOfMonth) {
date = String.format("%02d", dayOfMonth) + "/" + String.format("%02d", monthOfYear + 1) + "/" +
String.format("%02d", year);
Log.d("DTAG", "date: "+date);
}
CalendarPickerFragment
public class CalendarPickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
private CalendarPickerFragment.OnDateReceiveCallBack mListener;
private Context context;
public interface OnDateReceiveCallBack {
public void onDateReceive(int dd ,int mm, int yy);
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
this.context = context;
try {
mListener = (CalendarPickerFragment.OnDateReceiveCallBack) context;
} catch (ClassCastException e) {
throw new ClassCastException(context.toString() + " must implement OnDateSetListener");
}
}
public CalendarPickerFragment(){
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH);
int day = cal.get(Calendar.DAY_OF_MONTH);
return new DatePickerDialog(getActivity(), this, year, month, day);
}
@Override
public void onDateSet(DatePicker datePicker, int i, int i1, int i2) {
Log.d(TAG, i + "/" + "/" + i1 + "/" + i2);
mListener.onDateReceive(i,i1,i2);
}
好的,您可以使用您在
alertDialog
下面应该是您的日历PickerFragment
public class CalendarPickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
private CalendarPickerFragment.OnDateReceiveCallBack mListener;
private Context context;
private static CalendarPickerFragment.OnDateReceiveCallBack mListenerForAlertDialog;
public interface OnDateReceiveCallBack {
public void onDateReceive(int dd, int mm, int yy);
}
public static CalendarPickerFragment getInstance(CalendarPickerFragment.OnDateReceiveCallBack callback) {
mListenerForAlertDialog = callback;
return new CalendarPickerFragment();
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
this.context = context;
try {
mListener = (CalendarPickerFragment.OnDateReceiveCallBack) context;
} catch (ClassCastException e) {
throw new ClassCastException(context.toString() + " must implement OnDateSetListener");
}
}
public CalendarPickerFragment() {
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH);
int day = cal.get(Calendar.DAY_OF_MONTH);
return new DatePickerDialog(getActivity(), this, year, month, day);
}
@Override
public void onDateSet(DatePicker datePicker, int i, int i1, int i2) {
Log.d("tag", i + "/" + "/" + i1 + "/" + i2);
mListener.onDateReceive(i, i1, i2);
mListenerForAlertDialog.onDateReceive(i, i1, i2);
}
}
现在,按如下方式初始化该fragmnet
CalendarPickerFragment newFragment = CalendarPickerFragment.getInstance(new CalendarPickerFragment.OnDateReceiveCallBack() {
@Override
public void onDateReceive(int dd, int mm, int yy) {
// boom you wil get the call back on each date selection here
//eidtTextOfALertDialog.setText("whatEver")
}
});
newFragment.show(getFragmentManager(), "DatePicker");
如果可以在日期选择器中提供警报对话框xml文件,则有一个名为onDateSelectedListner的接口。它在其回调函数onDateSet中返回日期这是一种可以更改编辑文本的方法value@AdeelTurk你能告诉我怎么做吗?我已经试过了way@AlfonsoBrice尼诺,你能分享CalendarPickerFragment代码吗?然后我可以告诉你确切的答案。我从你的问题中得到的是,你想在日期选择时在edittext中显示所选的日期或任何其他文本..天哪!很有效,非常感谢你。你是个天才。