Я испытываю странное поведение со средствами выбора в моем приложении, так как обновление средства выбора совершенного пикселя: средство выбора показывает, когда форма вызывается для отображения, перед тем, как форма показывается.
Я пробовал с новым облегченным режимом, со старым режимом, внутри 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: Искаженный экран ).