Как показать дважды TimePickerDialog?

Я использую компилируемую библиотеку 'com.wdullaer:materialdatetimepicker:2.3.0' для часов открытия и закрытия (AM & PM). Я хотел бы снова показать TimePickerDialog для PM после того, как пользователь выберет AM. И затем, я хотел бы показать данные AM+PM на TextView. Здесь One TimePickerDialog.

layout_time.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Calendar now = Calendar.getInstance();
                TimePickerDialog tpd = TimePickerDialog.newInstance(
                        MainActivity.this,
                        now.get(Calendar.HOUR_OF_DAY),
                        now.get(Calendar.MINUTE),
                        false
                );
                tpd.show(getFragmentManager(), "Timepickerdialog");
            }
        });

@Override
    public void onResume() {
        super.onResume();
        TimePickerDialog tpd = (TimePickerDialog) getFragmentManager().findFragmentByTag("Timepickerdialog");
        if (tpd != null) tpd.setOnTimeSetListener(this);
    }

@Override
    public void onTimeSet(RadialPickerLayout view, int hourOfDay, int minute, int second) {
        String time = hourOfDay + ":" + minute + " am";
        txt_time.setText(time);
    }

2 ответа

Покажи второе TimePicker от первого onTimeSet метод.

@Override
public void onTimeSet(RadialPickerLayout view, int hourOfDay, int minute, int second) {
    String time = hourOfDay + ":" + minute + " am";
    // call the second TimePicker's show() method from here
}

А затем установите TextViewтекст от второго TimePicker"s onTimeSet, когда у вас оба раза.

Что-то вроде этого:

final Calendar now = Calendar.getInstance();
final TextView yourTextView = (TextView) findViewById(R.id.yourTextView);

new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {
    @Override
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
        String time1 = hourOfDay + ":" + minute; // time from first picker

        // showing a second TimePicker immediately after the first time was set
        new TimePickerDialog(YourActivity.this, new TimePickerDialog.OnTimeSetListener() {
            @Override
            public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                String time2 = hourOfDay + ":" + minute; // time from second picker
                yourTextView.setText(time1 + time2); // setting the TextView's text using both times
            }
        }, now.get(Calendar.HOUR_OF_DAY), now.get(Calendar.MINUTE), false).show();
    }
}, now.get(Calendar.HOUR_OF_DAY), now.get(Calendar.MINUTE), false).show();

Вы должны справиться с условием для этого в onTimeSet метод

@Override
public void onTimeSet(RadialPickerLayout view, int hourOfDay, int minute, int second) {

    if(amSelected){
       String amTime = hourOfDay + ":" + minute + " am";
      // call the second TimePicker's show() method from here
    }else if(pmSelected){
      String pmTime = hourOfDay + ":" + minute + " pm";
    }

    if(amSelected && pmSelected){
      //Set Data To textView
      yourtextView.setText(amTime +"-"+pmTime );
    }        

}
Другие вопросы по тегам