проверьте, совпадают ли текстовые даты в кнопках в onClickListener - PullRequest
0 голосов
/ 15 декабря 2011

У меня есть две кнопки даты.Эти две кнопки содержат строку в виде текста.Если кто-то нажимает на кнопку, появляется средство выбора даты.После этого выбора даты я хочу проверить, содержит ли две кнопки одну и ту же строку даты.Если это так, я хочу, чтобы две кнопки появились (под этими двумя кнопками) с двумя таймерами.

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);
    }
}

И наконец, Class 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();
    }
};
 }

1 Ответ

0 голосов
/ 15 декабря 2011

Вы можете определить interface внутри DateDialog класса следующим образом:

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(); 
     }     
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...