Android DatePicker调用两次后TextView更新

问题描述:

我是新的android,我想显示对话框datepicker即使在TextView的点击。但是,在textview上从datepicker设置日期需要两次。Android DatePicker调用两次后TextView更新

的TextView XML:

<TextView 
    android:id="@+id/dateTxtView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginBottom="8dp" 
    android:layout_marginLeft="8dp" 
    android:layout_marginRight="8dp" 
    android:layout_marginTop="8dp" 
    android:text="MM/DD/YYYY"> 

活动代码:

private static final String TAG = "MainActivity"; 
private TextView mDisplayDate; 
private DatePickerDialog.OnDateSetListener mDateSetListener; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    //Setting date at the start of the app 
    mDisplayDate = (TextView) findViewById(R.id.dateTxtView); 

      mDisplayDate.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        Calendar mCalendar = Calendar.getInstance(); 
        int year = mCalendar.get(Calendar.YEAR); 
        int month = mCalendar.get(Calendar.MONTH); 
        int day = mCalendar.get(Calendar.DAY_OF_MONTH); 
        DatePickerDialog dateDialog = new DatePickerDialog(
          MainActivity.this, 
          android.R.style.Theme_Holo_Light_Dialog_MinWidth, 
          mDateSetListener, 
          year,month,day 
        ); 
        dateDialog.setTitle("Select the date"); 
        dateDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); 
        dateDialog.show(); 
        mDateSetListener = new DatePickerDialog.OnDateSetListener() { 
         @Override 
         public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) { 
          month = month + 1; 
          Log.d(TAG,"date has been set"); 
          String dateToday = month + "/" + dayOfMonth + "/" + year; 
          mDisplayDate.setText(dateToday); 
         } 
        }; 

       } 
      }); 

首先,我点击的TextView和显示对话框日期选择器设定日期后,然后单击确定,有没有值传递给textview。在第二次,我再次点击并设置另一个日期,日期现在传递给textview。请帮我解决问题。

还应当声明并定义你的听众

   mDateSetListener = new DatePickerDialog.OnDateSetListener() { 
        @Override 
        public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) { 
         month = month + 1; 
         Log.d(TAG,"date has been set"); 
         String dateToday = month + "/" + dayOfMonth + "/" + year; 
         mDisplayDate.setText(dateToday); 
        } 
       }; 

之前您在选择器构造函数中使用它

DatePickerDialog dateDialog = new DatePickerDialog(
         MainActivity.this, 
         android.R.style.Theme_Holo_Light_Dialog_MinWidth, 
         mDateSetListener, 
         year,month,day 
       ); 
+0

谢谢floydheld! – Ngigz