Пикер не отображается в нужный момент - PullRequest
0 голосов
/ 07 июня 2018

Я испытываю странное поведение со средствами выбора в моем приложении, так как обновление средства выбора совершенного пикселя: средство выбора показывает, когда форма вызывается для отображения, перед тем, как форма показывается.

Я пробовал с новым облегченным режимом, со старым режимом, внутри PickerComponent, с помощью только средства выбора, на Android 7, iOS 10 и симуляторе, все ведут себя аналогично.

Единственное отличие состоит в том, что при использовании PickerComponent ошибка появляется, когда форма отображается во второй раз.

Ошибка возникает один раз, потому что большую часть времени я храню свои формы в памяти, и это происходит толькопервый раз.

Вот небольшой пример кода, который нужно добавить в метод запуска barebone hello world:

Picker pick = new Picker();
pick.setType(PICKER_TYPE_STRINGS);
pick.setStrings("First model", "Second model", "Third model");
pick.addActionListener(e->Dialog.show("Picker result", pick.getSelectedString(), "OK", null));
pick.setUseLightweightPopup(false);

Picker pick2 = new Picker();
pick2.setType(PICKER_TYPE_STRINGS);
pick2.setStrings("First model", "Second model", "Third model");
pick2.addActionListener(e->Dialog.show("Picker result", pick2.getSelectedString(), "OK", null));
pick2.setUseLightweightPopup(true);

PickerComponent pickerComponent = PickerComponent.createStrings("First model", "Second model", "Third model").label("Model Heavy");
pickerComponent.getPicker().setUseLightweightPopup(false);
pickerComponent.getPicker().addActionListener(e->Dialog.show("Picker result", pickerComponent.getPicker().getSelectedString(), "OK", null));

PickerComponent pickerComponent2 = PickerComponent.createStrings("First model", "Second model", "Third model").label("Model Light");
pickerComponent2.getPicker().setUseLightweightPopup(true);
pickerComponent2.getPicker().addActionListener(e->Dialog.show("Picker result", pickerComponent2.getPicker().getSelectedString(), "OK", null));

Form hi = new Form("PickerCompo Heavy", BoxLayout.y());
hi.add(pickerComponent);

Form hi2 = new Form("PickerCompo Light", BoxLayout.y());
hi2.add(pickerComponent2);

Form hi3 = new Form("Picker Heavy", BoxLayout.y());
hi3.add(pick);

Form hi4 = new Form("Picker Light", BoxLayout.y());
hi4.add(pick2);

Form caller = new Form("Call Hi World", BoxLayout.y());
Button callForm = new Button("hit me heavyweight Compo");
callForm.addActionListener(e->{
    hi.setBackCommand("Back", null, ev-> caller.showBack());
    hi.show();
});

Button callFormLight = new Button("hit me Lightweight Compo");
callFormLight.addActionListener(e->{
    hi2.setBackCommand("Back", null, ev-> caller.showBack());
    hi2.show();
});

Button callForm3 = new Button("hit me heavyweight");
callForm3.addActionListener(e->{
    hi3.setBackCommand("Back", null, ev-> caller.showBack());
    hi3.show();
});

Button callForm4 = new Button("hit me Lightweight");
callForm4.addActionListener(e->{
    hi4.setBackCommand("Back", null, ev-> caller.showBack());
    hi4.show();
});

caller.add(callForm);
caller.add(callFormLight);
caller.add(callForm3);
caller.add(callForm4);
caller.show();

Есть идеи обойти?Я использую их в некоторых основных формах своего приложения и хочу обновить приложение, чтобы разрешить искажающий экран на iOS (SO: Искаженный экран ).

1 Ответ

0 голосов
/ 08 июня 2018

Произошла регрессия с Picker из-за изменений в функциональности фокуса , которые использовались с изменением Picker, но применимы даже в нативной функциональности.

Это должно быть исправлено в обновлении, которое мы только что выпустили.

...