如何使用 DialogFragment 在 EditText 中显示选定日期
How to show Selected Date in EditText using DialogFragment
我正在使用 DialogFragment
在用户点击 EditText
时显示 DatePicker
如何在同一个 EditText
.
中显示所选日期
我正在使用 this 作为参考。
DatePickerFragment.java:
public class DatePickerFragment extends DialogFragment
implements DatePickerDialog.OnDateSetListener {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current date as the default date in the picker
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
// Create a new instance of DatePickerDialog and return it
return new DatePickerDialog(getActivity(), this, year, month, day);
}
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
Calendar c = Calendar.getInstance();
c.set(year, monthOfYear, dayOfMonth);
SimpleDateFormat sdf = new SimpleDateFormat("dd MMMM yyyy");
String formattedDate = sdf.format(c.getTime());
Toast.makeText(getActivity(), formattedDate, Toast.LENGTH_LONG).show();
}
}
片段:
editDate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
android.support.v4.app.DialogFragment dialogFragment = new DatePickerFragment();
dialogFragment.show(getFragmentManager(), "datePicker");
}
});
当我点击 EditText 时,它会在 Toast
中显示 DatePicker
和选定的日期。但我不知道如何在 EditText
?
中显示该日期
只需替换为:
Toast.makeText(getActivity(), formattedDate, Toast.LENGTH_LONG).show();
行或输入此行以在 EditText 中显示日期:
EditText date=(EditText)find(...);
date.setText(formattedDate);
根据您的 class 结构,最好的方法是
创建一个以 EditText 作为参数的构造函数。
private EditText mEditText;
...
public DatePickerFragment(EditText editText)
{
mEditText = editText;
}
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth)
{
Calendar c = Calendar.getInstance();
c.set(year, monthOfYear, dayOfMonth);
SimpleDateFormat sdf = new SimpleDateFormat("dd MMMM yyyy");
String formattedDate = sdf.format(c.getTime());
Toast.makeText(getActivity(), formattedDate, Toast.LENGTH_LONG).show();
mEditText.setText( formattedDate );
}
然后在创建对话框选择器实例时传递 editDate class。
public void onClick(View v)
{
android.support.v4.app.DialogFragment dialogFragment = new DatePickerFragment(editDate);
dialogFragment.show(getFragmentManager(), "datePicker");
}
另一个解决方案是从中删除 DatePickerDialog.OnDateSetListener
DatePickerFragment
并在您的片段中实现侦听器。
public class OtherFragment extends Fragment
implements DatePickerDialog.OnDateSetListener
{
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
Calendar c = Calendar.getInstance();
c.set(year, monthOfYear, dayOfMonth);
SimpleDateFormat sdf = new SimpleDateFormat("dd MMMM yyyy");
String formattedDate = sdf.format(c.getTime());
Toast.makeText(getActivity(), formattedDate, Toast.LENGTH_LONG).show();
editDate.setText( formattedDate );
}
}
你可以这样做 -
EditText edttxt_date = (EditText) findViewById(R.id.date);
edttxt_date.setText(formattedDate);
Toast.makeText(getBaseContext(), formattedDate, Toast.LENGTH_SHORT).show();
或
您也可以使用 Calender 和 DatePickerDialogFragment 来显示类似这样的时间和 return 您的片段的相应值。
DateFormat dateFormat = DateFormat.getDateInstance();
edttxt_date.setText(dateFormat.format(cal.getTime()));
希望对您有所帮助!!
在 MainFragment class 中添加 DatePickerFragment class。
一旦 public void onDateSet() 被调用,在同一个 class 中调用一个方法来更新 editText 字段。
public MainFragment extents Fragment{
.....
updateDateField(String formattedDate){
editDate.setText(formattedDate);
}
public class DatePickerFragment extends DialogFragment
implements DatePickerDialog.OnDateSetListener {
....
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
Calendar c = Calendar.getInstance();
c.set(year, monthOfYear, dayOfMonth);
SimpleDateFormat sdf = new SimpleDateFormat("dd MMMM yyyy");
String formattedDate = sdf.format(c.getTime());
updateDateField(formattedDate);
}
}
}
我正在使用 DialogFragment
在用户点击 EditText
DatePicker
如何在同一个 EditText
.
我正在使用 this 作为参考。
DatePickerFragment.java:
public class DatePickerFragment extends DialogFragment
implements DatePickerDialog.OnDateSetListener {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current date as the default date in the picker
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
// Create a new instance of DatePickerDialog and return it
return new DatePickerDialog(getActivity(), this, year, month, day);
}
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
Calendar c = Calendar.getInstance();
c.set(year, monthOfYear, dayOfMonth);
SimpleDateFormat sdf = new SimpleDateFormat("dd MMMM yyyy");
String formattedDate = sdf.format(c.getTime());
Toast.makeText(getActivity(), formattedDate, Toast.LENGTH_LONG).show();
}
}
片段:
editDate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
android.support.v4.app.DialogFragment dialogFragment = new DatePickerFragment();
dialogFragment.show(getFragmentManager(), "datePicker");
}
});
当我点击 EditText 时,它会在 Toast
中显示 DatePicker
和选定的日期。但我不知道如何在 EditText
?
只需替换为:
Toast.makeText(getActivity(), formattedDate, Toast.LENGTH_LONG).show();
行或输入此行以在 EditText 中显示日期:
EditText date=(EditText)find(...);
date.setText(formattedDate);
根据您的 class 结构,最好的方法是 创建一个以 EditText 作为参数的构造函数。
private EditText mEditText;
...
public DatePickerFragment(EditText editText)
{
mEditText = editText;
}
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth)
{
Calendar c = Calendar.getInstance();
c.set(year, monthOfYear, dayOfMonth);
SimpleDateFormat sdf = new SimpleDateFormat("dd MMMM yyyy");
String formattedDate = sdf.format(c.getTime());
Toast.makeText(getActivity(), formattedDate, Toast.LENGTH_LONG).show();
mEditText.setText( formattedDate );
}
然后在创建对话框选择器实例时传递 editDate class。
public void onClick(View v)
{
android.support.v4.app.DialogFragment dialogFragment = new DatePickerFragment(editDate);
dialogFragment.show(getFragmentManager(), "datePicker");
}
另一个解决方案是从中删除 DatePickerDialog.OnDateSetListener
DatePickerFragment
并在您的片段中实现侦听器。
public class OtherFragment extends Fragment
implements DatePickerDialog.OnDateSetListener
{
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
Calendar c = Calendar.getInstance();
c.set(year, monthOfYear, dayOfMonth);
SimpleDateFormat sdf = new SimpleDateFormat("dd MMMM yyyy");
String formattedDate = sdf.format(c.getTime());
Toast.makeText(getActivity(), formattedDate, Toast.LENGTH_LONG).show();
editDate.setText( formattedDate );
}
}
你可以这样做 -
EditText edttxt_date = (EditText) findViewById(R.id.date);
edttxt_date.setText(formattedDate);
Toast.makeText(getBaseContext(), formattedDate, Toast.LENGTH_SHORT).show();
或 您也可以使用 Calender 和 DatePickerDialogFragment 来显示类似这样的时间和 return 您的片段的相应值。
DateFormat dateFormat = DateFormat.getDateInstance();
edttxt_date.setText(dateFormat.format(cal.getTime()));
希望对您有所帮助!!
在 MainFragment class 中添加 DatePickerFragment class。 一旦 public void onDateSet() 被调用,在同一个 class 中调用一个方法来更新 editText 字段。
public MainFragment extents Fragment{
.....
updateDateField(String formattedDate){
editDate.setText(formattedDate);
}
public class DatePickerFragment extends DialogFragment
implements DatePickerDialog.OnDateSetListener {
....
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
Calendar c = Calendar.getInstance();
c.set(year, monthOfYear, dayOfMonth);
SimpleDateFormat sdf = new SimpleDateFormat("dd MMMM yyyy");
String formattedDate = sdf.format(c.getTime());
updateDateField(formattedDate);
}
}
}