WedX - журнал о программировании и компьютерных науках

Добавление средства выбора времени в средство выбора даты Android

Я пытаюсь добавить time picker в средство выбора даты. Я новичок в java, может быть, кто-нибудь может показать мне правильный путь? Я хочу, чтобы средство выбора времени отображалось в верхней части представления календаря, после того как я выберу дату, всплывающее окно выбора времени. Является ли это возможным ? В файле xml есть только несколько полей EditText, которые уже объявлены в этом классе.

 public class CompletedWorksActivity extends Activity implements
        DatePickerDialog.OnDateSetListener, OnClickListener, OnTimeSetListener {
    private TextView text_date;
    private Button search;
    private EditText from;
    private EditText to;
    private int yearfrom;
    private int monthfrom;
    private int dayfrom;
    private int hourfrom;
    private int minfrom;
    private int yearto;
    private int monthto;
    private int dayto;
    private int hourto;
    private int minto;
    private int hour;
    private int min;
    private DatePickerDialog date_picker;
    private TimePickerDialog time_picker;
    private boolean fromEdit;
    private boolean toEdit;

    @Override
    protected void onCreate(Bundle menuinstance) {
        super.onCreate(menuinstance);
        setContentView(R.layout.completed_works);

        Intent intent = getIntent(); // gaunam
        User user = (User) intent.getSerializableExtra("user");

        from = (EditText) findViewById(R.id.datefrom);
        to = (EditText) findViewById(R.id.dateto);
        Calendar cal = Calendar.getInstance();
        hour = cal.get(Calendar.HOUR_OF_DAY);
        min = cal.get(Calendar.MINUTE);
        date_picker = new DatePickerDialog(this, this, cal.get(Calendar.YEAR),
                cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH));
        date_picker.getDatePicker().setCalendarViewShown(true);
        date_picker.getDatePicker().setSpinnersShown(false);
        time_picker = new TimePickerDialog(this, this, hour, min, true);
        from.setOnFocusChangeListener(focusListener);
        to.setOnFocusChangeListener(focusListener);
        time_picker.set

        search = (Button) findViewById(R.id.searchSubmit);

        // search.setOnClickListener(searchlistener);
    }

    @Override
    public void onDateSet(DatePicker dp, int y, int m, int d) {
        String cheapDate = y + "-" + (m + 1) + "-" + d;
        View v = getCurrentFocus();
        if (v == from) {
            yearfrom = y;
            monthfrom = m;
            dayfrom = d;
            Log.d("year from ", "" + yearfrom + monthfrom + dayfrom);
        } else {
            yearto = y;
            monthto = m;
            dayto = d;
            Log.d("year to ", "" + yearto + monthto + dayto);
            // Toast.makeText(getApplicationContext(),yearto+monthto+dayto ,
            // Toast.LENGTH_LONG ).show();
        }
        if (fromEdit) {
            from.setText(cheapDate);
        } else {
            to.setText(cheapDate);
        }

    }

    private View.OnClickListener searchlistener = new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

        }
    };

    private View.OnFocusChangeListener focusListener = new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if (hasFocus) {
                EditText edit = (EditText) v;
                int len = edit.getText().toString().length();

                if (edit == findViewById(R.id.datefrom)) {
                    Toast.makeText(getApplicationContext(), "Data nuo ? ",
                            Toast.LENGTH_LONG).show();
                    fromEdit = v.getId() == R.id.datefrom;
                    date_picker.show();
                } else {
                    Toast.makeText(getApplicationContext(), "Data iki ? ",
                            Toast.LENGTH_LONG).show();
                    fromEdit = v.getId() == R.id.datefrom;
                    date_picker.show();

                }
            }
        }

    };

    @Override
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub

    }



}

  • Тоже ищу решение похожей проблемы. 14.04.2014
  • У меня была аналогичная проблема не так давно, и я считаю, что установка средства выбора времени после средства выбора даты устранила проблему (в то время как использование средства выбора времени до средства выбора даты не работало). 14.04.2014

Ответы:


1

Android очень легко установить время с помощью android.widget.TimePicker component.

См. это руководство. Здесь вы можете увидеть, как пользователь может выбрать час и минуту, используя простое в использовании диалоговое окно android.app.TimePickerDialog.

14.04.2014

2

Попробуйте, как показано ниже:

date_time_layout.xml

<DatePicker
    android:id="@+id/datePicker1"
    android:layout_width="wrap_content"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:calendarViewShown="false" > <!-- style="@style/date_picker_style" -->
</DatePicker>

<TimePicker
    android:id="@+id/timePicker1"
    android:layout_width="wrap_content"
    android:layout_height="0dp"
    android:layout_weight="1" >
</TimePicker>

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="10dp"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp" >

    <Button
        android:id="@+id/btnCancelDT"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:background="@drawable/button_selector"
        android:text="Cancel"
        android:textColor="@color/white"
        android:textStyle="bold" />

    <Button
        android:id="@+id/btnSetDT"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:background="@drawable/button_selector"
        android:text="Set"
        android:textColor="@color/white"
        android:textStyle="bold" />
</LinearLayout>

Activity class:

public void showDateTimePickerDialog() {


        final Dialog dialog = new Dialog(this);

        dialog.setContentView(R.layout.date_time_layout);

        dialog.setTitle("Set Schedule Call");

        dialog.show();

        Button btnCancel = (Button)dialog.findViewById(R.id.btnCancelDT);
        Button btnSet = (Button)dialog.findViewById(R.id.btnSetDT);

        final DatePicker dp = (DatePicker)dialog.findViewById(R.id.datePicker1);
        final TimePicker tp = (TimePicker)dialog.findViewById(R.id.timePicker1);


        btnCancel.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                dialog.dismiss();
            }
        });

        btnSet.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                String am_pm = "";
                // TODO Auto-generated method stub
                int m = dp.getMonth()+1;
                int d = dp.getDayOfMonth();
                int y = dp.getYear();

                int h = tp.getCurrentHour();
                int min = tp.getCurrentMinute();

                String strm = String.valueOf(min);

                if(strm.length()==1){
                    strm = "0"+strm;
                }
                if(h>12){
                    am_pm = "PM";
                    h = h-12;
                }else{
                    am_pm = "AM";
                }

                date = m+"/"+d+"/"+y+" "+h+":"+strm+":00 "+am_pm;
                time = h+":"+strm+" "+am_pm;

                            System.out.println("Date: " + date +" Time: "+ time);

                dialog.dismiss();
            }
        });
    }

вызовите этот метод при нажатии кнопки или как хотите.

14.04.2014
Новые материалы

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

ИИ в аэрокосмической отрасли
Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


Для любых предложений по сайту: [email protected]