我在5.0操作系统中的Tour和Storm大小版本的内部和外部管理器中创建HorizontalFieldManager。 将模拟器旋转到横向模式时,除内部管理器外,所有变量都在初始化。 在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()方法包含创建管理器和字段的所有内容。 我怎样才能解决这个问题。