2016-11-03 10 views
-2

私は短く問題を説明したいと思いますが、今は2つのアンドロイドデータピッカーダイアログ、チェックインとチェックアウトがあります。チェックインdatepicker私はすでに今日のように、ユーザーが今日から選択できることを意味心を設定している。しかし、チェックイン日からユーザーが選択した日付をチェックイン日付ピッカーから設定する方法。他の日付ピッカーダイアログで選択した日付の前の日付を無効にする

例:本日2016年3月11日

ユーザーは、チェックインの日付ピッカーから選択します。2016年7月11日

私は以前のすべての日付はチェックイン時に2016年7月11日を参照してください無効にしたいです-out Datepicker。

私は多くのチュートリアルとフォーラムを検索していますが、ほとんどの場合、現在の日付のパスの日付ベースを無効にする方法のみが表示されます。 私のアプリケーションは、ホテル・ログインシステム

public void showDialog() { 
    btncheckin = (Button) findViewById(R.id.checkInDate); 
    btncheckout = (Button) findViewById(R.id.checkoutdate); 
    btncheckin.setOnClickListener(
      new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        showDialog(DIALOG_ID); 

       } 


      } 
    ); 
    btncheckout.setOnClickListener(
      new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        showDialog(DIALOG2_ID); 

       } 


      } 
    ); 

} 

@Override 
protected Dialog onCreateDialog(int id) { 

    switch (id) { 
     case DIALOG2_ID: 

      DatePickerDialog datePickerDialog = new DatePickerDialog(this, dpickerListnerCheckOut, year_x, month_x, day_x); 


      Calendar c = Calendar.getInstance(); 

      c.add(Calendar.DATE, 1); 

      Date newDateBlock = c.getTime(); 
      datePickerDialog.getDatePicker().setMinDate(newDateBlock.getTime()); 

      return datePickerDialog; 

     case DIALOG_ID: 

     DatePickerDialog datePickerDialog2 = new DatePickerDialog(this, dpickerListnerCheckIn, year_x, month_x, day_x); 
      Calendar c2 = Calendar.getInstance(); 

      c2.add(Calendar.DATE, 1); 
      datePickerDialog2.getDatePicker().setMinDate(System.currentTimeMillis()-1000); 

      return datePickerDialog2; 
    } 
    return null; 
} 


DatePickerDialog.OnDateSetListener dpickerListnerCheckOut = new DatePickerDialog.OnDateSetListener() { 
    @Override 
    public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) { 
     year_x = year; 
     month_x = month + 1; 
     day_x = dayOfMonth; 

     //Toast.makeText(PaymentActivity.this,year_x +"/"+month_x +"/"+day_x,Toast.LENGTH_SHORT).show(); 

     checkOutText.setText(year_x + "/" + month_x + "/ " + day_x); 


    } 
}; 


DatePickerDialog.OnDateSetListener dpickerListnerCheckIn = new DatePickerDialog.OnDateSetListener() { 
    @Override 
    public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) { 
     year_x = year; 
     month_x = month + 1; 
     day_x = dayOfMonth; 
     checkInText.setText(year_x + "/" + month_x + "/ " + day_x); 
    } 
}; 
+0

チェックイン日をミリ秒単位でロング変数にしてから、チェックアウトDatePicker。 – vidulaJ

+0

チェックイン日をミリ秒単位でロング変数にするにはどうすればいいですか?いくつかの例を表示できますか? – JackdonChew

答えて

0

を私はチェックアウトの日付ピッカーで次の行

try { 
    String dateString = checkInDate; 
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); 
    Date date = sdf.parse(dateString); 
    Long minDate = date.getTime(); 
    } catch (java.text.ParseException e) { 
      e.printStackTrace(); 
    } 

を追加ダイアログ

DatePickerDialog datePickerDialog = new DatePickerDialog(this, dpickerListnerCheckOut, year_x, month_x, day_x); 
Calendar c = Calendar.getInstance(); 

     c.add(Calendar.DATE, 1); 
     datePickerDialog.getDatePicker().setMinDate(minDate); 

return datePickerDialog; 

私が行った解決策は、私はチェックインdpickerlistener minDateから心を込めて、mindate datepickerdialogにチェックを入れようとしています

0

をやっている、あなたはこの試してみてください: - 私のチェックインdpickerlistenerインサイド

datePickerDialog.getDatePicker().setMinDate(newDate.getTime()-(newDate.getTime()%(24*60*60*1000))); 
+0

私は2つの行の両方をテストしており、今日のパスの日付ベースを無効にします。そして、私はすでに私の質問で述べたようにこれを達成したいと思っています。 私は2つのDataPickerDialog、Check InとCheck Outを持っています。 CheckIn datepickerダイアログで、選択した日付のCheckOut datepickerダイアログベースのすべてのパス日付を無効にしたいとします。 詳しくは、例を挙げます: ユーザCheckIn DatePickerダイアログで15/11/2016を選択してください。 CheckOutダイアログで、2011年15月15日の前回の日付ベースをブロックしたいとします。 – JackdonChew

+0

@JackdonChew更新されたanswer.ifを確認してください。質問があれば私に聞くことができます。 – LoveAndroid

+0

newDate.getTime() newDateフォームはどこですか?私はまだdatepickerに新しいです... – JackdonChew

関連する問題