2011-12-15 45 views
0

我有兩個日期按鈕。這兩個按鈕包含一個字符串作爲文本。 如果有人點擊按鈕,日期選擇器會出現。在這個日期選擇器 我想檢查兩個按鈕是否包含相同的日期字符串。 如果是這樣,我想用兩個 時間選擇器出現兩個按鈕(在這兩個按鈕下面)。檢查按鈕中的textdates是否在onClickListener中相同

First image when no date is choosen

This is what should happen

的問題是,該檢查,如果兩個日期相等的方法中,自動地在第一點擊按鈕之後開始。所以我必須點擊兩次按鈕來正確檢查日期是否相等。

這裏是我的代碼:

首先onClickListeners

startDate.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 

     DateDialog dateStart = new DateDialog(startDate, mYear, mMonth, mDay); 
     checkdates(); 

    } 
}); 

endDate.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
     DateDialog dateEnd = new DateDialog(endDate, mYear, mMonth, mDay); 
     checkdates(); 
    } 
}); 

二,checkdates方法:

private void checkdates() { 

    String firstdate = startDate.getText().toString(); 
    String seconddate = endDate.getText().toString(); 

    if (firstdate.equals(seconddate)) { 
     row1.setVisibility(View.VISIBLE); 
     row2.setVisibility(View.VISIBLE); 
    } else { 
     row1.setVisibility(View.INVISIBLE); 
     row2.setVisibility(View.INVISIBLE); 
    } 
} 

,最後,類DateDialog這就是所謂的onClickListener:

public class DateDialog { 

private int mMonth; 
private int mYear; 
private int mDay; 
private Button txtButton; 

public DateDialog(Button b, int year, int month, int day){ 
    txtButton = b; 
    onCreateDialog(year, month, day); 
} 

protected Dialog onCreateDialog(int year, int month, int day) { 
     DatePickerDialog dialog = new DatePickerDialog(NostradamusActivity2.parentcontext, mDateSetListener, year, 
       month, day); 
     dialog.show(); 
     return null; 
} 

// updates the date we display in the TextView 
private void updateDisplay() { 
    txtButton.setText(new StringBuilder() 
      // Month is 0 based so add 1 
      .append(mYear).append("-").append(mMonth + 1).append("-") 
      .append(mDay).append("")); 
} 

private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() { 
    public void onDateSet(DatePicker view, int year, int monthOfYear, 
      int dayOfMonth) { 
     mYear = year; 
     mMonth = monthOfYear; 
     mDay = dayOfMonth; 
     updateDisplay(); 
    } 
}; 
} 
+0

你怎麼辭退或證實對話? – 2011-12-15 11:04:42

+0

我想這是DatePickerDialog中的一個內置函數。 – nostradamus 2011-12-15 11:11:33

回答

0

您可以定義一個interfaceDateDialog類是這樣的:

public static interface DateDialogListener 
{ 
    public void dialogDateChanged(); 
} 

,並聲明內DateDialog類中的字段作爲

DateDialogListener dateListener; 

,併爲它創建一個setter法也。

updateDisplay()把這個呼籲在年底也

if(dateListener != null) 
dateListener.dialogDateChanged(); 

,當你從按鈕onClick()打開一個對話框,裏面Activity使用DateDialogListener這樣的方式:

DateDialog dateStart = new DateDialog(startDate, mYear, mMonth,mDay); 
dateStart.setDateListener(new DateDialogListener() 
{ 
    public void dialogDateChanged() 
    { 
     checkdates(); 
    }  
}); 
相關問題