Ore*_*reo 6 android datepicker android-edittext android-dialogfragment
我DialogFragment用来显示DatePicker用户点击的时间EditText
如何在相同的日期显示所选日期EditText.
我用它作为参考.
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();
}
}
Run Code Online (Sandbox Code Playgroud)
分段:
editDate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
android.support.v4.app.DialogFragment dialogFragment = new DatePickerFragment();
dialogFragment.show(getFragmentManager(), "datePicker");
}
});
Run Code Online (Sandbox Code Playgroud)
当我点击EditText时,它会显示DatePicker并选择日期Toast.但我无法弄清楚如何显示该日期EditText?
根据您的类结构,最好的方法是创建一个以 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 );
}
Run Code Online (Sandbox Code Playgroud)
然后在创建对话框选择器类的实例时传递 editDate。
public void onClick(View v)
{
android.support.v4.app.DialogFragment dialogFragment = new DatePickerFragment(editDate);
dialogFragment.show(getFragmentManager(), "datePicker");
}
Run Code Online (Sandbox Code Playgroud)
另一个解决方案是删除DatePickerDialog.OnDateSetListenerfrom
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 );
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2434 次 |
| 最近记录: |