Мне нужно использовать и Picker и BrowserComponent в одной форме.
Picker позволит пользователю выбиратьзначение, используемое для создания HTML-кода, который будет отображаться BrowserComponent .
Следующий код хорошо работает в Android.
В iOS после использования средства выборачтобы выбрать значение, все запутается: средство выбора остается нарисованным на экране, BrowserComponent пуст и приложение зависает!?
Ошибка в Codename One?
Проблема воспроизводима на iOS 10, 10.3.3 и 12.1
package edu.ch.emf.praesto;
import static com.codename1.ui.CN.*;
import com.codename1.ui.Display;
import com.codename1.ui.Form;
import com.codename1.ui.Dialog;
import com.codename1.ui.plaf.UIManager;
import com.codename1.ui.util.Resources;
import com.codename1.ui.BrowserComponent;
import com.codename1.ui.CN1Constants;
import com.codename1.ui.layouts.BorderLayout;
import com.codename1.ui.spinner.Picker;
public class App {
private Form currentForm;
private Resources theme;
public void init(Object context) {
// Loading the theme
this.theme = UIManager.initFirstTheme("/theme");
}
public void start() {
// Load last shown form on reopening
if (this.currentForm != null) {
this.currentForm.show();
return;
}
// Force orientation locking if the plattform supports it
if (Display.getInstance().canForceOrientation()) {
Display.getInstance().lockOrientation(true);
}
Form form = new Form(new BorderLayout());
String[] strs = new String[]{"Option 1", "Option 2", "Option 3"};
Picker picker = new Picker();
picker.setType(CN1Constants.PICKER_TYPE_STRINGS);
picker.setStrings(strs);
form.add(BorderLayout.NORTH, picker);
BrowserComponent htmlViewer = new BrowserComponent();
htmlViewer.setPage("<html><head></head><body><h1>Test</h1></body></html>", null);
form.add(BorderLayout.CENTER, htmlViewer);
form.show();
}
public void stop() {
this.currentForm = getCurrentForm();
if (this.currentForm instanceof Dialog) {
((Dialog) this.currentForm).dispose();
this.currentForm = getCurrentForm();
}
}
public void destroy() {
}
}