2014-02-19 4 views
1

enter image description here Вот источник выбора даты. Он работает правильно, но я хочу изменить дату при выборе даты снова.Как показать последнюю выбранную дату в EditText при повторном выборе даты?

private int year; 
private int month; 
private int day; 
     signup_bday=(EditText)findViewById(R.id.edittext_signup_birthday); 
     signup_bday.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      Calendar mcurrentDate=Calendar.getInstance(); 
       year=mcurrentDate.get(Calendar.YEAR); 
       month=mcurrentDate.get(Calendar.MONTH); 
       day=mcurrentDate.get(Calendar.DAY_OF_MONTH); 

       DatePickerDialog mDatePicker=new  DatePickerDialog(CreateAccountActivity.this, new OnDateSetListener() 
       {     
        public void onDateSet(DatePicker datepicker, int selectedyear, int selectedmonth, int selectedday) 
        { 
        signup_bday.setText(new StringBuilder().append(month + 1).append("-").append(day).append("-").append(year).append(" ")); 
        } 
       },year, month, day); 
       mDatePicker.setTitle("Please select date");     
       mDatePicker.show(); 
     } 
    }); 

enter image description here

+0

http://www.mkyong.com/android/android-date-picker-example/ – appukrb

+0

Можете ли вы уточнить, что вы подразумеваете под «Я хочу, чтобы изменить дату»? На основании чего? Вы пытаетесь реорганизовать передачу даты (объект календаря)? – ErstwhileIII

+0

nups просто хотят выбрать дату еще раз и отобразить последнюю выбранную дату ... – Banku

ответ

2

Хорошо, я решил вашу проблему, Вот код,

public class MainActivity extends Activity 
{ 
    private int year; 
    private int month; 
    private int day; 
    private EditText signup_bday; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     signup_bday=(EditText)findViewById(R.id.edittext_signup_birthday); 
     signup_bday.setOnClickListener(new OnClickListener() 
     { 
      @Override 
      public void onClick(View v) 
      { 
       Calendar mcurrentDate=Calendar.getInstance(); 
       year=mcurrentDate.get(Calendar.YEAR); 
       month=mcurrentDate.get(Calendar.MONTH); 
       day=mcurrentDate.get(Calendar.DAY_OF_MONTH); 

       DatePickerDialog mDatePicker = new DatePickerDialog(MainActivity.this, new OnDateSetListener() 
       {     
        public void onDateSet(DatePicker datepicker, int selectedyear, int selectedmonth, int selectedday) 
        { 
         year = selectedyear; 
         month = selectedmonth; 
         day = selectedday; 
         signup_bday.setText(new StringBuilder().append(month + 1).append("-").append(day).append("-").append(year).append(" ")); 
        } 
       },year, month, day); 
       mDatePicker.setTitle("Please select date");     
       mDatePicker.show(); 
      } 
     }); 
    } 
} 

Вам просто нужно добавить следующие строки в onDateSet() метод ,

year = selectedyear; 
month = selectedmonth; 
day = selectedday; 
+0

(y) thx broo ... – Banku

+0

@Banku добро пожаловать. – user3322955

+0

Все работает отлично, но при разжиге Fire Hd datepicker диалог не работает должным образом ... – Banku

1

Я думаю, что ваш метод onDateSet не вызывался. Добавьте комментарий @override и попробуйте следующий код.

@Override 
public void onDateSet(DatePicker view, int year, int monthOfYear, 
       int dayOfMonth) { 
      // TODO Auto-generated method stub 

} 

Что я понял ... В первый раз отображается текущая дата. Если пользователь выбирает 5, январь 2014, то второй раз он отображает ранее выбранные данные (5, январь 2014 г.). Если вы пытаетесь достичь этого, то попробуйте что-то вроде этого

final Calendar cal = Calendar.getInstance(); 
try { 
    cal.setTime(new Date(PREVIOUSLY_SELECTED_DATE)); 
} catch (IllegalArgumentException e) { 

} 
+0

hmm но показывая текущую дату ... – Banku