gpt4 book ai didi

codenameone - 第二次调用时不显示表单

转载 作者:行者123 更新时间:2023-12-05 07:26:58 28 4
gpt4 key购买 nike

我为应用程序制作了一个简单的侧边菜单。第一次调用菜单时。菜单显示正常。

当我第二次重新调用菜单时,我看到一个空白屏幕。

这是我构建菜单的方式:

package com.mainsys.zappeion;


import static com.codename1.ui.CN.*;
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.io.Log;
import com.codename1.ui.Toolbar;
import com.codename1.ui.FontImage;

/**
* This file was generated by <a href="https://www.codenameone.com/">Codename One</a> for the purpose
* of building native mobile applications using Java.
*/
public class Zappeion {

private Form current;
private Resources theme;

public void init(Object context) {
// use two network threads instead of one
updateNetworkThreadCount(2);

theme = UIManager.initFirstTheme("/theme");

// Enable Toolbar on all Forms by default
Toolbar.setGlobalToolbar(true);

// Pro only feature
Log.bindCrashProtection(true);

addNetworkErrorListener(err -> {
// prevent the event from propagating
err.consume();
if(err.getError() != null) {
Log.e(err.getError());
}
Log.sendLogAsync();
Dialog.show("Connection Error", "There was a networking error in the connection to " + err.getConnectionRequest().getUrl(), "OK", null);
});
}

public void start() {

if(current != null){
current.show();
return;
}

Toolbar tb = new Toolbar();

Statues statues = new Statues();
statues.setToolbar(tb);
tb.addMaterialCommandToSideMenu("Αγάλματα", FontImage.MATERIAL_ALBUM, e -> {
statues.show();
});
Sights sights = new Sights();
sights.setToolbar(tb);
tb.addMaterialCommandToSideMenu("Αξιοθέατα", FontImage.MATERIAL_ALBUM, e -> {
sights.show();
});
Map map = new Map();
map.setToolbar(tb);
tb.addMaterialCommandToSideMenu("Χάρτης ", FontImage.MATERIAL_ALBUM, e -> {
map.show();
});

MainSys mns = new MainSys();
mns.setToolbar(tb);
SplashScreen sc = new SplashScreen(); //(sights, mns);
sc.setToolbar(tb);
sc.show();
}

public void stop() {
current = getCurrentForm();
if(current instanceof Dialog) {
((Dialog)current).dispose();
current = getCurrentForm();
}
}

public void destroy() {
}

}

在上面的代码中,如果我点击菜单中的 Sights Form,它将显示正常。如果然后我重新单击此菜单,我将看到一个空白屏幕,没有菜单工具栏,什么也没有。

感谢任何帮助。

最佳答案

Toolbar 是一个组件,它只能有一个父组件,而您已将其添加到 3。我猜控制台中会抛出一个异常来表明这一点。可能是由于 Toolbar 的独特性,没有抛出异常。

我建议您不要创建工具栏,而是使用 form.getToolbar(); 特别是因为您的代码已经声明了 Toolbar.setGlobalToolbar(true);

关于codenameone - 第二次调用时不显示表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54131857/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com