Я создаю HorizontalFieldManager в Менеджере, как внутренний и внешний в версиях Tour и Storm, в ОС 5.0.При повороте симулятора в ландшафтный режим инициализируются все переменные, кроме внутреннего менеджера.В методе sublayout я проверил screenWidth, отбросил все менеджеры и добавил их снова.Я использую следующий код.
outerHFM = new HorizontalFieldManager() {
protected void sublayout(int maxWidth, int maxHeight) {
layoutChild(next, maxWidth, maxHeight);
setPositionChild(next, 300, 5);
layoutChild(innerHfm, 200, maxHeight);
setPositionChild(innerHfm, 10, 5);
layoutChild(previous, maxWidth, maxHeight);
setPositionChild(previous, 44, 5);
setExtent(maxWidth, 40);
}
};
innerHfm = new HorizontalFieldManager(Manager.HORIZONTAL_SCROLL|Manager.USE_ALL_WIDTH) {
protected void sublayout(int maxWidth, int maxHeight) {
int space = 0;
int x = 90;
for (int i = 0; i < cardsSize; i++) {
layoutChild(numbtn[i], 210, maxHeight);
setPositionChild(numbtn[i], x + space+offset, 0);
space = space + 50;
}
setExtent(240, 40);
}
};
public void sublayout(int width, int height) {
if (UIinitialize.screenWidth != Display.getWidth()) {
UIinitialize. Variables();
try {
if (innerHfm != null) {
innerHfm.deleteAll();
}
if (outerHfm != null) {
(outerHfm .deleteAll();
}
initialize();
} catch (Exception e) {
e.printStackTrace();
}
}
super.sublayout(width, height);
}
UIinitialize.Variables () инициализирует screenWidths.
Здесь метод initialize () содержит все элементы создания менеджеров и полей.Как я могу решить эту проблему.