在Android中动态更改Libgdx中的视图

在Android中动态更改Libgdx中的视图,android,opengl-es,libgdx,Android,Opengl Es,Libgdx,我有两个独立的3D Libgdx项目,我们称它们为SceneOne和scenewo。 假设我在Android中有一个布局,其中有两个按钮:ButtonA和ButtonB。 当我单击按钮时,版面中会显示

我有两个独立的3D Libgdx项目,我们称它们为SceneOnescenewo。 假设我在Android中有一个布局,其中有两个按钮:ButtonA和ButtonB。 当我单击按钮时,版面中会显示,当我单击按钮时,会显示并替换SceneOne。他们互相交换

下面的伪代码可以工作,但每次都会初始化视图,这会导致性能低下:

View SceneOne;
View SceneTwo;

void onButtonAClick()
{
this.removeView(SceneTwo);
RendererA renderer = new Renderer(); // my Libgdx class implementing ApplicationListener
SceneOne = ((AndroidApplication)context).initializeForView(renderer, cfg);
addView(SceneOne);
}


void onButtonBClick()
{
this.removeView(SceneOne);
RendererB renderer = new Renderer(); 
SceneTwo = ((AndroidApplication)context).initializeForView(renderer, cfg);
addView(SceneTwo);
}
它很慢,但很有效。但是当我像这样将初始化更改为lazy时,它就会停止工作

View SceneOne;
View SceneTwo;

void onButtonAClick()
{
this.removeView(SceneTwo);
if ( SceneOne == null)
{
RendererA renderer = new Renderer(); // my Libgdx class implementing ApplicationListener
SceneOne = ((AndroidApplication)context).initializeForView(renderer, cfg);
}
addView(SceneOne);
}


void onButtonBClick()
{
this.removeView(SceneOne);
if ( SceneTwo == null)
{
RendererB renderer = new Renderer(); 
SceneTwo = ((AndroidApplication)context).initializeForView(renderer, cfg);
}
addView(SceneTwo);
}
发生的情况是:

  • SceneOne出现
  • 我单击按钮b
  • SceneTwo出现
  • 我单击按钮a
  • 屏幕上出现了一些奇怪的东西,看起来像是场景,但有一些瑕疵
  • 当我尝试切换时,相同的伪影场景会留在屏幕上

  • 为什么会发生这种情况?我应该如何解决?谢谢

    我使用了一个名为
    AndroidFragmentApplication
    的新类,只切换片段,同时保留对片段的引用,因此无需每次切换时重新初始化