Codenameone 表单在第二次调用时未显示

Codenameone 表单在第二次调用时未显示,codenameone,Codenameone,我为一个应用程序制作了一个简单的侧菜单。第一次打开菜单时。菜单显示ok 当我第二次重新调用菜单时,我看到一个空白屏幕 以下是我构建菜单的方式: 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

我为一个应用程序制作了一个简单的侧菜单。第一次打开菜单时。菜单显示ok

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

以下是我构建菜单的方式:

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() {
    }

}
package com.mainsys.zappeon;
导入静态com.codename1.ui.CN.*;
导入com.codename1.ui.Form;
导入com.codename1.ui.Dialog;
导入com.codename1.ui.plaf.UIManager;
导入com.codename1.ui.util.Resources;
导入com.codename1.io.Log;
导入com.codename1.ui.Toolbar;
导入com.codename1.ui.FontImage;
/**
*此文件是为此目的由生成的
*使用Java构建本机移动应用程序的方法。
*/
公开课{
私有形式电流;
私人资源主题;
公共void init(对象上下文){
//使用两个网络线程而不是一个
updateNetworkThreadCount(2);
theme=UIManager.initFirstTheme(“/theme”);
//默认情况下,在所有窗体上启用工具栏
Toolbar.setGlobalToolbar(true);
//仅限专业版功能
Log.bindCrashProtection(true);
addNetworkErrorListener(错误->{
//防止事件传播
err.consume();
if(err.getError()!=null){
Log.e(err.getError());
}
sendLogAsync();
show(“连接错误”,“连接到”+err.getConnectionRequest().getUrl(),“确定”,null)时出现网络错误);
});        
}
公开作废开始(){
如果(当前!=null){
current.show();
返回;
}
工具栏tb=新工具栏();
雕像=新雕像();
雕像.设置工具栏(tb);
tb.addMaterialCommandToSideMenu(“Αγάλματα”),FontImage.MATERIAL_相册,e->{
雕像;
});
景点=新景点();
设置工具栏(tb);
tb.addMaterialCommandToSideMenu(“Αξιοθατα”,FontImage.MATERIAL_相册,e->{
景观。展示();
});
Map Map=newmap();
map.setToolbar(tb);
tb.addMaterialCommandToSideMenu(“Χάρτης”),FontImage.MATERIAL_相册,e->{
map.show();
});
MainSys mns=新的MainSys();
mns.setToolbar(tb);
SplashScreen sc=新SplashScreen();/(视野,mns);
sc.setToolbar(tb);
sc.show();
}
公共停车场(){
current=getCurrentForm();
if(当前instanceof对话框){
((对话框)当前).dispose();
current=getCurrentForm();
}
}
公共空间销毁(){
}
}
在上面的代码中,例如,如果我单击菜单上的Sights表单,它将显示ok。如果我重新点击这个菜单,我会得到一个没有菜单工具栏的空白屏幕,什么也没有


非常感谢您的帮助。

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


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

它实际起作用的是下面的代码。我不知道它为什么会工作,因为我看到的只是代码的重新排序。另一个我想改变的是,我下载了新闻皮肤(Galaxy S8,ipone 8 plus)并在上面进行了测试。但在那之后,它对我以前的皮肤起了作用(三星s7,iPhone6)。这很奇怪,我不知道是否有人看到了更多的东西

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;
        }        

        Statues statues = new Statues();
        Sights sights = new Sights();
        Map map  = new Map();
        MainSys mns = new MainSys();
        SplashScreen sc = new SplashScreen(sights, mns);
        BrowserForm browser = new BrowserForm();

        Toolbar tb = statues.getToolbar();

        tb.addMaterialCommandToSideMenu("Αρχική", FontImage.MATERIAL_ALBUM, e -> { 
           sc.setTitle("Αρχική");
           sc.show();              
        });
        tb.addMaterialCommandToSideMenu("Αγάλματα", FontImage.MATERIAL_ALBUM, e -> { 
             statues.setTitle("Αγάλματα");
             statues.setUrl("https://www.zappeion.gr/el/statues");
             statues.show();              
        });

        tb.addMaterialCommandToSideMenu("Αξιοθέατα", FontImage.MATERIAL_ALBUM, e -> { 
            sights.show();              
        });


       tb.addMaterialCommandToSideMenu("Χάρτης ", FontImage.MATERIAL_ALBUM, e -> { 
            map.show();              
        });

        statues.setToolbar(tb);
        sights.setToolbar(tb);
        map.setToolbar(tb);
        mns.setToolbar(tb);
        sc.setToolbar(tb);
        sc.show();
    }

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

    public void destroy() {
    }

}
package com.mainsys.zappeon;
导入静态com.codename1.ui.CN.*;
导入com.codename1.ui.Form;
导入com.codename1.ui.Dialog;
导入com.codename1.ui.plaf.UIManager;
导入com.codename1.ui.util.Resources;
导入com.codename1.io.Log;
导入com.codename1.ui.Toolbar;
导入com.codename1.ui.FontImage;
/**
*此文件是为此目的由生成的
*使用Java构建本机移动应用程序的方法。
*/
公开课{
私有形式电流;
私人资源主题;
公共void init(对象上下文){
//使用两个网络线程而不是一个
updateNetworkThreadCount(2);
theme=UIManager.initFirstTheme(“/theme”);
//默认情况下,在所有窗体上启用工具栏
Toolbar.setGlobalToolbar(true);
//仅限专业版功能
Log.bindCrashProtection(true);
addNetworkErrorListener(错误->{
//防止事件传播
err.consume();
if(err.getError()!=null){
Log.e(err.getError());
}
sendLogAsync();
show(“连接错误”,“连接到”+err.getConnectionRequest().getUrl(),“确定”,null)时出现网络错误);
});        
}
公开作废开始(){
如果(当前!=null){
current.show();
返回;
}        
雕像=新雕像();
景点=新景点();
Map Map=newmap();
MainSys mns=新的MainSys();
SplashScreen sc=新的SplashScreen(景点、mns);
BrowserForm browser=新建BrowserForm();
工具栏tb=status.getToolbar();
tb.addMaterialCommandToSideMenu(“Αρχική”),FontImage.MATERIALή相册,e->{
sc.setTitle(“Αρχικ”);
sc.show();
});
tb.addMaterialCommandToSideMenu(“Αγάλματα”),FontImage.MATERIAL_相册,e->{
雕像。背景名称(“Αγάλματα”);
status.setUrl(“https://www.zappeion.gr/el/statues");
雕像;
});
tb.addMaterialCommandToSideMenu(“Αξιοθέατα”,FontImage.MATERIALο相册,