Мой EditText обновляется только SetText (); каждая вторая попытка - PullRequest
0 голосов
/ 29 октября 2018

Я пытаюсь отобразить дату и время в поле EditText и сделал некоторый код здесь. Дело в том, что это работает - но только со второй попытки. Это значит, что я выбираю дату и время. Ничего не происходит, а на втором попробуйте setText (); обновляет EditText для отображения даты и времени. Однако, как вы уже догадались, я бы хотел, чтобы он немедленно обновил EditText.

@Override
 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_add_reservation);

    firebaseAuth = FirebaseAuth.getInstance();
    textViewUserid = findViewById(R.id.addReservation_userId_edittext);

    FirebaseUser user = firebaseAuth.getCurrentUser();
    textViewUserid.setText(user.getEmail());

    gestureDetector = new GestureDetector(this);

    mDisplayDate = findViewById(R.id.addReservation_fromTime_edittext);
    mDisplayDate2 = findViewById(R.id.addReservation_toTime_edittext);


    mDisplayDate.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Calendar cal = Calendar.getInstance();
            int year = cal.get(Calendar.YEAR);
            int month = cal.get(Calendar.MONTH);
            int day = cal.get(Calendar.DAY_OF_MONTH);
            int hour = cal.get(Calendar.HOUR_OF_DAY);
            int minute = cal.get(Calendar.MINUTE);

            DatePickerDialog datePickerDialog = new DatePickerDialog(
                    AddReservationActivity.this,
                    android.R.style.Theme_Light,
                    mDateSetListener,
                    year,month,day);

            TimePickerDialog timePickerDialog = new TimePickerDialog(
                    AddReservationActivity.this,
                    android.R.style.Theme_Light,
                    mTimeSetListener,
                    hour,minute,true);

            timePickerDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
            timePickerDialog.show();
            datePickerDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
            datePickerDialog.show();
        }
    });
    mDateSetListener = new DatePickerDialog.OnDateSetListener() {
        @Override
        public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
            month = month + 1;
            final String date = dayOfMonth + "/" + month + "/" + year;

            mTimeSetListener = new TimePickerDialog.OnTimeSetListener() {
                @Override
                public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                    if (minute < 10) {
                        String time = "" + hourOfDay + ":" + "0"+minute;
                        mDisplayDate.getText().toString();
                        mDisplayDate.setText(date + " " + time);
                    }else {
                        String time = "" + hourOfDay + ":" + minute;
                        mDisplayDate.getText().toString();
                        mDisplayDate.setText(date + " " + time);

                    }
                }
            };
        }
    }

Я уже несколько часов пытаюсь это исправить, просматривая все Stackoverflow и множество других сайтов. Это немного расстраивает, и я действительно надеюсь, что кто-то получит информацию о том, что я делаю неправильно.

Прошу прощения, если на сайте уже есть решение, которое я пропустил. Заранее большое спасибо.

1 Ответ

0 голосов
/ 30 октября 2018

Я нашел решение, добавив EditText - как предложено в комментарии. Поэтому вместо того, чтобы пытаться установить текст EditText одновременно со строкой даты и времени. Я разделил их и сделал setText (дата); и добавить со временем:

  mDateSetListener = new DatePickerDialog.OnDateSetListener() {
        @Override
        public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
            month = month + 1;
            final String date = dayOfMonth + "/" + month + "/" + year;
            mDisplayDate.setText(date);
        }
    };
    mTimeSetListener = new TimePickerDialog.OnTimeSetListener() {
        @Override
        public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
            if (minute < 10) {
                String time = " " + hourOfDay + ":" + "0" + minute;
                mDisplayDate.append(time);
            } else {
                String time = " " + hourOfDay + ":" + minute;
                mDisplayDate.append(time);

            }
        }
    };
...