【问题标题】:DatePicker dialog after reselecting datepicker shows current date重新选择日期选择器后的日期选择器对话框显示当前日期
【发布时间】:2023-03-03 19:09:02
【问题描述】:

再次选择时,我试图在日期选择器对话框中显示所选日期。

这是我尝试过的。

 signup.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()
                {   
                    @Override
                    public void onDateSet(DatePicker datepicker, int selectedyear, int selectedmonth, int selectedday) 
                    {
                            year = selectedyear; 
                            month = selectedmonth; 
                            day = selectedday;
                     signup.setText(new StringBuilder().append(year).append("-").append(month+1).append("-").append(day));
                    }
                },year, month, day);
                mDatePicker.setTitle("Please select date");                
                mDatePicker.getDatePicker().setMaxDate(System.currentTimeMillis());
                mDatePicker.show();


        }
    });

但问题是当我再次选择我的日期时。它显示当前日期。 我想在对话框中显示选定的日期。

【问题讨论】:

  • 我想你第二次不会从 DatePicker 中选择日期吧???
  • @user3467110 你可以在下面看到我的回答
  • 嗯检查了@ErsinGülbahar 和thnx...
  • @user3467110 如果它不工作你可以告诉我,在我的环境中它工作

标签: android datepicker datepickerdialog


【解决方案1】:

我已经解决了答案...

这就是答案……

public void onClick(View v) {

             if (year == 0 || month == 0 || day == 0) {
             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()
                {   
                    @Override
                    public void onDateSet(DatePicker datepicker, int selectedyear, int selectedmonth, int selectedday) 
                    {
                            year = selectedyear; 
                            month = selectedmonth; 
                            day = selectedday;
                     signup.setText(new StringBuilder().append(year).append("-").append(month+1).append("-").append(day));
                    }
                },year, month, day);
                mDatePicker.setTitle("Please select date");                
                mDatePicker.getDatePicker().setMaxDate(System.currentTimeMillis());
                mDatePicker.show();

我关注了页面 DatePickerDialog always opens the current date

阅读评论并感谢@Andrew T :)

【讨论】:

    【解决方案2】:

    你可以用这个:

    private EditText mbirthdayView;  
        mbirthdayView=(EditText)findViewById(R.id.birthday);
    mbirthdayView.setOnClickListener(new OnClickListener() {
    
            @SuppressWarnings("deprecation")
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                showDialog(DATE_DIALOG_ID);
            }
        });
    
    @Override
        protected Dialog onCreateDialog(int id) {
            switch (id) {
            case DATE_DIALOG_ID:
                // set date picker as current date
                return new DatePickerDialog(this, datePickerListener, year, month,
                        day);
            }
            return null;
        }
    
    private DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener() {
    
            // when dialog box is closed, below method will be called.
            public void onDateSet(DatePicker view, int selectedYear,
                    int selectedMonth, int selectedDay) {
                year = selectedYear;
                month = selectedMonth;
                day = selectedDay;
    
                // set selected date into textview
                mbirthdayView.setText(  (day)+(".")+(month + 1)+(".")+(year));
    
                // set selected date into datepicker also
                dpResult.init(year, month, day, null);
    
            }
        };
    

    【讨论】:

      【解决方案3】:

      你可以效仿我的例子:

      打开“res/layout/main.xml”文件,添加日期选择器、标签和按钮进行演示。

      <?xml version="1.0" encoding="utf-8"?>
      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:orientation="vertical" >
      
          <Button
              android:id="@+id/btnChangeDate"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="Change Date" />
      
          <TextView
              android:id="@+id/lblDate"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="Current Date (M-D-YYYY): "
              android:textAppearance="?android:attr/textAppearanceLarge" />
      
          <TextView
              android:id="@+id/tvDate"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text=""
              android:textAppearance="?android:attr/textAppearanceLarge" />
      
          <DatePicker
              android:id="@+id/dpResult"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content" />
      
      </LinearLayout>
      

      阅读代码注释,它应该是不言自明的。

      文件:MyAndroidAppActivity.java

      public class MyAndroidAppActivity extends Activity {
      
          private TextView tvDisplayDate;
          private DatePicker dpResult;
          private Button btnChangeDate;
      
          private int year;
          private int month;
          private int day;
      
          static final int DATE_DIALOG_ID = 999;
      
          @Override
          public void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.main);
      
              setCurrentDateOnView();
              addListenerOnButton();
      
          }
      
          // display current date
          public void setCurrentDateOnView() {
      
              tvDisplayDate = (TextView) findViewById(R.id.tvDate);
              dpResult = (DatePicker) findViewById(R.id.dpResult);
      
              final Calendar c = Calendar.getInstance();
              year = c.get(Calendar.YEAR);
              month = c.get(Calendar.MONTH);
              day = c.get(Calendar.DAY_OF_MONTH);
      
              // set current date into textview
              tvDisplayDate.setText(new StringBuilder()
                  // Month is 0 based, just add 1
                  .append(month + 1).append("-").append(day).append("-")
                  .append(year).append(" "));
      
              // set current date into datepicker
              dpResult.init(year, month, day, null);
      
          }
      
          public void addListenerOnButton() {
      
              btnChangeDate = (Button) findViewById(R.id.btnChangeDate);
      
              btnChangeDate.setOnClickListener(new OnClickListener() {
      
                  @Override
                  public void onClick(View v) {
      
                      showDialog(DATE_DIALOG_ID);
      
                  }
      
              });
      
          }
      
          @Override
          protected Dialog onCreateDialog(int id) {
              switch (id) {
              case DATE_DIALOG_ID:
                 // set date picker as current date
                 return new DatePickerDialog(this, datePickerListener, 
                               year, month,day);
              }
              return null;
          }
      
          private DatePickerDialog.OnDateSetListener datePickerListener 
                      = new DatePickerDialog.OnDateSetListener() {
      
              // when dialog box is closed, below method will be called.
              public void onDateSet(DatePicker view, int selectedYear,
                      int selectedMonth, int selectedDay) {
                  year = selectedYear;
                  month = selectedMonth;
                  day = selectedDay;
      
                  // set selected date into textview
                  tvDisplayDate.setText(new StringBuilder().append(month + 1)
                     .append("-").append(day).append("-").append(year)
                     .append(" "));
      
                  // set selected date into datepicker also
                  dpResult.init(year, month, day, null);
      
              }
          };
      
      }
      

      我希望你能从我的例子中得到帮助。

      【讨论】:

      • 感谢您给我反馈...@omor4android(但我想要我的源代码的答案...)
      猜你喜欢
      • 2014-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-07
      • 1970-01-01
      相关资源
      最近更新 更多