2015-11-13 2 views
-1

Я знаю, что это, возможно, было задано раньше, но я не могу найти решение для своей проблемы. У меня есть два 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()); 

ответ

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>