Кодовое имя One PickerComponent setStartDate и setEndDate использование - PullRequest
0 голосов
/ 02 декабря 2018

Я попробовал следующий код, чтобы установить startDate и endDate для PickerComponent:

CSS:

#Constants {
    includeNativeBool: true; 
    lightweightPickerBool: true; /* It's necessary to use the "setStartDate" and "setEndDate" of the Picker */
}

MainClass:

    Form f = new Form(new TextModeLayout(1, 1));
    int MINAGE = 13;

    Calendar minAge = Calendar.getInstance(); // it's not a singleton, /6509769/pochemu-u-menya-mozhet-byt-tolko-odin-ekzemplyar-obekta-calendar
    minAge.setTime(new Date()); // current time
    int year = minAge.get(Calendar.YEAR) - MINAGE;
    minAge.set(Calendar.YEAR, year);
    Date endDate = minAge.getTime();

    Calendar maxAge = Calendar.getInstance();
    maxAge.setTime(new Date());
    maxAge.set(Calendar.YEAR, 1930);
    maxAge.set(Calendar.MONTH, 1);
    maxAge.set(Calendar.DAY_OF_MONTH, 1);
    Date startDate = maxAge.getTime();

    PickerComponent inputCmp = PickerComponent.createDate(endDate).label("Birthday");
    Log.p("startDate: " + startDate.toString());
    Log.p("endDate: " + endDate.toString());
    inputCmp.getPicker().setStartDate(startDate);
    inputCmp.getPicker().setEndDate(endDate);

    f.add(inputCmp);
    f.show();

, но когда я пытаюсьчтобы выбрать дату в пике, я получаю:

[EDT] 0:0:0,293 - startDate: Sat Feb 01 12:30:58 CET 1930
[EDT] 0:0:0,307 - endDate: Fri Dec 02 12:30:58 CET 2005
[EDT] 0:0:2,227 - Exception: java.lang.ArrayIndexOutOfBoundsException - Index out of bounds
java.lang.ArrayIndexOutOfBoundsException: Index out of bounds
    at com.codename1.ui.spinner.SpinnerNode.setSelectedIndex(SpinnerNode.java:284)
    at com.codename1.ui.spinner.SpinnerNode.rebuildChildren(SpinnerNode.java:213)
    at com.codename1.ui.spinner.SpinnerNode.setListModel(SpinnerNode.java:227)
    at com.codename1.ui.spinner.Spinner3D.setModel(Spinner3D.java:207)
    at com.codename1.ui.spinner.DateSpinner3D.setEndYear(DateSpinner3D.java:340)
    at com.codename1.ui.spinner.DateSpinner3D.setDateRange(DateSpinner3D.java:216)
    at com.codename1.ui.spinner.Picker$1.createDatePicker3D(Picker.java:490)
    at com.codename1.ui.spinner.Picker$1.showInteractionDialog(Picker.java:605)
    at com.codename1.ui.spinner.Picker$1.actionPerformed(Picker.java:303)
    at com.codename1.ui.util.EventDispatcher.fireActionEvent(EventDispatcher.java:349)
    at com.codename1.ui.Button.fireActionEvent(Button.java:570)
    at com.codename1.ui.Button.released(Button.java:604)
    at com.codename1.ui.Button.pointerReleased(Button.java:708)
    at com.codename1.ui.Form.pointerReleased(Form.java:3339)
    at com.codename1.ui.Component.pointerReleased(Component.java:4528)
    at com.codename1.ui.Display.handleEvent(Display.java:2079)
    at com.codename1.ui.Display.edtLoopImpl(Display.java:1051)
    at com.codename1.ui.Display.mainEDTLoop(Display.java:969)
    at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:120)
    at com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)

Проверено в симуляторе.

1 Ответ

0 голосов
/ 03 декабря 2018

Это ошибка в Picker В прошлом я просил пользователя сообщить о проблеме, но, похоже, он этого не сделал.Кажется, стандартное поведение сборщика - показывать 1970 год как самую старую дату.Это явно проблематично и должно быть решено.

...