从EditText设置datepickerdialog的日期

时间:2013-11-11 14:29:55

标签: android datepickerdialog

我非常惊讶,即使在搜索1小时后我也无法在网上找到它!

我有一个日期选择器对话框,略微修改了原始的Pickers示例(感谢Raghunandan for this)。

但我不想将默认日期设置为当前日期,而是应该从EditText中选择日期并将该日期设置为datepickerdialog。有人可以帮我解决这个问题吗?我目前的代码如下所示。

已编辑 我需要知道如何从DatePickerFragment类中访问EditText datepurchased的值。

主要课程:

public class EditEntry extends Activity  implements DatePickerFragment.TheListener{
    EditText edit_datepurchased;
public void showdate(View v) {
        edit_datepurchased = (EditText) findViewById(v.getId());
        DialogFragment newFragment = new DatePickerFragment();
        newFragment.show(getFragmentManager(), "datePicker");
    }
public void returnDate(String date) {
        edit_datepurchased.setText(date);
    }
}

DatePickerFragment CLASS:

public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
    TheListener listener;

    public interface TheListener{
        public void returnDate(String date);
    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState){

        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);
        listener = (TheListener) getActivity(); 
        return new DatePickerDialog(getActivity(), this, year, month, day);
    }

    public void onDateSet(DatePicker view, int year, int month, int day){
        Calendar c = Calendar.getInstance();
        c.set(year, month, day);

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String formattedDate = sdf.format(c.getTime());
        if (listener != null) 
        {
          listener.returnDate(formattedDate); 

        }
          //listener.returnDate(year+"-"+(month+1)+"-"+day);
    }
}

n.b。:我有一个问题here on same code before,但我不知道如何在旧帖子中添加问题。

3 个答案:

答案 0 :(得分:7)

使用SimpleDateFormat,您可以将edittext中的日期转换为毫秒。

示例:

DateFormat df = new SimpleDateFormat("MM/dd/yyyy",Locale.US);

您需要根据显示格式调整格式,但之后只需使用DateFormat对象中的解析方法

Date d = df.parse(dateString);

然后创建一个Calendar对象并设置日期

Calendar calendar = Calendar.getInstance();
calendar.setDate(d);

修改

EditText发送文本,您需要在创建对话框片段时发送包中的字符串

示例:

DialogFragment newFragment = new DatePickerFragment();
Bundle bundle = new Bundle();
bundle.putString("dateAsText",edit_datepurchased.getText().toString());
newFragment.setArguments(bundle); 
newFragment.show(getFragmentManager(), "datePicker");

然后在你的dialogfragment中使用getArguments()来获取包

Bundle bundle = getArguments();
String date = bundle.getString("dateAsText");

答案 1 :(得分:2)

我希望它可以帮助你:

public class DatePickerFragment extends DialogFragment
{
    private OnDateSetListener onDateSetListener;

    public DatePickerFragment() {}

    public void setOnDateSetListener(OnDateSetListener onDateSetListener) {
        this.onDateSetListener = 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(), onDateSetListener, year, month, day);
    }

}

答案 2 :(得分:1)

“final Calendar c = Calendar.getInstance();” ,此代码将“c”设置为当前时间,将其修改为您想要的时间。