How to set the value of the datePicker in to EditText?

删除回忆录丶 提交于 2019-12-22 18:26:14

问题


My XMl Layout is as like below:

<RelativeLayout  android:id="@+id/dateSelectionLayout"  android:layout_width="fill_parent" android:layout_height="wrap_content"
        android:orientation="vertical" android:visibility="visible">

            <EditText android:layout_height="wrap_content" android:layout_width="fill_parent" 
                android:singleLine="true" android:id="@+id/dateSelectionEditText" android:gravity="center"
                android:textColor="#000000" android:textSize="14sp" android:cursorVisible="false"
                android:focusable="false"
                android:hint="tax code" android:layout_weight="1"/>

            <DatePicker android:id="@+id/datePicker"
                android:layout_width="fill_parent" android:layout_height="wrap_content"
                android:layout_weight="1" android:layout_below="@+id/dateSelectionEditText"/>

    </RelativeLayout>

Now i want to change the value of the editText that is based on the datePicker date. If User change the date then it should be reflected on the editText at that time. how it is Possible ?

Edited: I have done like this: Have set the resourcec like:

datePicker = (DatePicker) findViewById(R.id.datePicker);
        dateSelectionEditText = (EditText)findViewById(R.id.dateSelectionEditText);

And have set the override method like this:

@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear,
        int dayOfMonth) {
    dateSelectionEditText.setText(dayOfMonth+"/"+monthOfYear+"/"+year);

}

But still not getting any value on the changing of date picker value.

Edited:

After Kasper Moerch's answer i got the solution. But there is little problem. I am using this code to init the datepicker.

final Calendar c = Calendar.getInstance();  
        //dateSelectionEditText.setText( "" + dayOfMonth + "-" + monthOfYear + "-" + year );
        datePicker.init(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH), new MyOnDateChangedListener());
        Toast.makeText(getApplicationContext(), ""+position+"", Toast.LENGTH_SHORT).show();

Now with this, I am able to see the changed value from datePicker. But it takes 0 as a First month (from January) instead of the "1". So why it is happend like this ?

Thanks.


回答1:


What you need to do is get a reference to the EditText and the DatePicker:

EditText editText = (EditText) findViewById( R.id.dateSelectionEditText );
DatePicker datePicker = (DatePicker) findViewById( R.id.datePicker );

Then you need to create an OnDateChangedListener:

private class MyOnDateChangedListener implements OnDateChangedListener {
  @Override
  public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
     editText.setText( "" + dayOfMonth + "-" + (monthOfYear + 1) + "-" + year );
  }
};

All thats left to do is just initialize the DatePicker:

datePicker.init( year, monthOfYear, dayOfMonth, new MyOnDateChangedListener() ).



回答2:


Check this out Date pick tutorial

It shows you the best way to implement this. Then you can just change it to your liking.




回答3:


set like this

public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {

        selectedDate = Integer.toString(mMonth)+"/"+Integer.toString(mDay)+"/"+Integer.toString(mYear);
        date_text.setText(selectedDate);
        System.out.println("selected date is:"+selectedDate);
        edittext.setText(selectedDate );
    }
};



回答4:


Initialize these variable globally in your activity ,

private EditText zopenDate;
        Button calendar;

        private int mYear;
        private int mMonth;
        private int mDay;
        private DatePickerDialog.OnDateSetListener mDateSetListener;

inside your instance

calendar=(Button)findViewById(R.id.datePicker);
zopenDate=(EditText)findViewById(R.id.dateSelectionEditText);

inside your instance use this listeners,

mDateSetListener =
            new DatePickerDialog.OnDateSetListener() {

                public void onDateSet(DatePicker view, int year, 
                                      int monthOfYear, int dayOfMonth) {
                    mYear = year;
                    mMonth = monthOfYear;
                    mDay = dayOfMonth;
                    updateDisplay();
                }
            };



calendar.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    showDialog(DATE_DIALOG_ID);
                }
            });




final Calendar c = Calendar.getInstance();
            mYear = c.get(Calendar.YEAR);
            mMonth = c.get(Calendar.MONTH);
            mDay = c.get(Calendar.DAY_OF_MONTH);

            // display the current date (this method is below)
            updateDisplay();

the function updatedisplay() outside createInstance(),

private void updateDisplay() {
        zopenDate.setText(
            new StringBuilder()
                    // Month is 0 based so add 1
                    .append(mMonth + 1).append("-")
                    .append(mDay).append("-")
                    .append(mYear).append(" "));
    }



回答5:


Use this to reflect date in edit text

private OnDateSetListener setDOB = new OnDateSetListener() {

            @Override
            public void onDateSet(DatePicker view, int year, int month,
                    int dayOfMonth) {
                datePicker = (EditText) findViewById(R.id.dateOB);
                datePicker.setText(" " + dayOfMonth + "/" + (month + 1) + "/"
                        + year + "");

            }
        };


来源:https://stackoverflow.com/questions/8519800/how-to-set-the-value-of-the-datepicker-in-to-edittext

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!