【问题标题】:Setting minimum date on other date picker relevant to another date picker在与另一个日期选择器相关的其他日期选择器上设置最小日期
【发布时间】:2015-11-13 10:00:20
【问题描述】:

我知道以前可能有人问过这个问题,但我找不到解决我的问题的方法。我有两个 DatePickerDialogs,只要设置了开始日期,我就会将另一个 datepickerdialog 的最小日期设置为该日期。但它仍然不起作用,因为 enddatepicker 的最小日期与 startdatepicker 相同。这是我的参考代码:

 Calendar c = Calendar.getInstance();
    selectedEndDay   = selectedStartDay   = c.get(Calendar.DAY_OF_MONTH);
    selectedEndMonth = selectedStartMonth = c.get(Calendar.MONTH);
    selectedEndYear  = selectedStartYear  = c.get(Calendar.YEAR);



    startDatePickerDialog =  new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
        @Override
        public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
            selectedStartYear = year;
            selectedStartMonth = monthOfYear;
            selectedStartDay = dayOfMonth;
            Log.e(TAG, "SET DATE: " + selectedStartYear + "/" + selectedStartMonth + "/" + selectedStartDay);

            btnStartDate.setText((selectedStartMonth + 1) + "/" + selectedStartDay + "/" + selectedStartYear);

            //set minimum date of end datepicker
            Calendar c2 = Calendar.getInstance();
            c2.set(year, monthOfYear, dayOfMonth);
            endDatePickerDialog.getDatePicker().setMinDate(c2.getTime().getTime());

        }
    },selectedStartYear,selectedStartMonth,selectedStartDay);

    startDatePickerDialog.getDatePicker().setMinDate(System.currentTimeMillis()-1000);

    endDatePickerDialog =  new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
        @Override
        public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
            selectedEndYear = year;
            selectedEndMonth = monthOfYear;
            selectedEndDay = dayOfMonth;
            Log.e(TAG, "SET DATE: " + selectedEndYear + "/" + selectedEndMonth + "/" + selectedEndDay);

            btnEndDate.setText((selectedEndMonth+1)+"/"+selectedEndDay+"/"+selectedEndYear);


        }
    },selectedEndYear,selectedEndMonth,selectedEndDay);


    //set minimum date of end datepicker
    endDatePickerDialog.getDatePicker().setMinDate(c.getTime().getTime());

【问题讨论】:

    标签: android android-datepicker datepickerdialog


    【解决方案1】:

    我在下面做一个演示,使用这个代码。

    这是类文件。

    import java.util.Calendar;
    
    import android.app.Activity;
    import android.app.DatePickerDialog;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.Window;
    import android.widget.DatePicker;
    import android.widget.EditText;
    
    public class Example extends Activity {
    
        private EditText startDate, endDate;
        private int selectedStartYear;
    
        private int selectedStartDay;
        private     int selectedStartMonth;
        private int selectedEndDay;
        private int selectedEndMonth;
        private int selectedEndYear;
    
        private     DatePickerDialog SecD, firstD;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            requestWindowFeature(Window.FEATURE_NO_TITLE);
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_example);
    
    
    
            startDate = (EditText) findViewById(R.id.editText1);
            endDate = (EditText) findViewById(R.id.editText2);
    
    
            final Calendar c = Calendar.getInstance();
            selectedEndDay = selectedStartDay = c.get(Calendar.DAY_OF_MONTH);
            selectedEndMonth = selectedStartMonth = c.get(Calendar.MONTH);
            selectedEndYear = selectedStartYear = c.get(Calendar.YEAR);
            SecD = new DatePickerDialog(Pdf.this, new SecondDate(),
                    selectedEndYear, selectedEndMonth, selectedEndDay);
    
            firstD = new DatePickerDialog(Pdf.this, new FirstDate(),
                    selectedStartYear, selectedStartMonth, selectedStartDay);
            startDate.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
    
                    firstD.show();
    
                }
            });
    
            endDate.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
    
                    SecD.show();
    
                }
            });
    
        }
    
        class FirstDate implements DatePickerDialog.OnDateSetListener {
            @Override
            public void onDateSet(DatePicker view, int year, int monthOfYear,
                    int dayOfMonth) {
                // Doing thing with first Date pick Dialog
    
                selectedStartYear = year;
                selectedStartMonth = monthOfYear;
                selectedStartDay = dayOfMonth;
    
                startDate.setText((selectedStartMonth + 1) + "/" + selectedStartDay
                        + "/" + selectedStartYear);
    
                // set minimum date of end datepicker
                Calendar c2 = Calendar.getInstance();
                c2.set(year, monthOfYear, dayOfMonth);
    
                SecD.getDatePicker().setMinDate(c2.getTime().getTime());
    
            }
    
        }
    
        class SecondDate implements DatePickerDialog.OnDateSetListener {
            @Override
            public void onDateSet(DatePicker view, int year, int monthOfYear,
                    int dayOfMonth) {
                // Doing thing with second Date Picker Dialog
    
                selectedEndYear = year;
                selectedEndMonth = monthOfYear;
                selectedEndDay = dayOfMonth;
    
                endDate.setText((selectedEndMonth + 1) + "/" + selectedEndDay + "/"
                        + selectedEndYear);
            }
    
        }
    }
    

    这是 xml 文件。

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/parentLinearLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
    
    
    
        <EditText
            android:id="@+id/editText1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ems="10" >
    
            <requestFocus />
        </EditText>
    
        <EditText
            android:id="@+id/editText2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ems="10" />
    
    </LinearLayout>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多