Java Libgdx:设置另一个屏幕,但旧屏幕上的按钮仍处于活动状态

Java Libgdx:设置另一个屏幕,但旧屏幕上的按钮仍处于活动状态,java,android,libgdx,Java,Android,Libgdx,在我的libgdx游戏中,我有两个屏幕,菜单和列表。 当我在菜单屏幕中单击标签时,我会执行设置屏幕(列表)。 新屏幕显示,菜单屏幕及其标签消失 但当我点击相同的位置时(从标签所在的菜单屏幕,但这些标签当然不会显示,因为我已经更改了屏幕),点击事件会响应。为什么? 注意:我的列表屏幕目前没有任何小部件的事件处理程序 切换屏幕时,除了设置屏幕(另一个屏幕)以停用旧屏幕之外,我还需要做其他事情吗?我更改了以下内容: 我使用该屏幕的stage变量将输入处理器移动到该屏幕的show()方法 public

在我的libgdx
游戏中,我有两个屏幕,
菜单
列表
。 当我在
菜单
屏幕中单击
标签
时,我会执行
设置屏幕(列表)
。 新屏幕显示,菜单屏幕及其标签消失

但当我点击相同的位置时(从标签所在的菜单屏幕,但这些标签当然不会显示,因为我已经更改了屏幕),点击事件会响应。为什么?

注意:我的列表屏幕目前没有任何小部件的事件处理程序

切换屏幕时,除了设置屏幕(另一个屏幕)
以停用旧屏幕之外,我还需要做其他事情吗?

我更改了以下内容:

我使用该屏幕的stage变量将输入处理器移动到该屏幕的show()方法

public void show() {
    ...
    Gdx.input.setInputProcessor(stage);

}

在此之前,我只在屏幕的构造器中设置此选项,因此即使我正在更改屏幕,输入处理器仍然连接到上次创建的屏幕的阶段

上面的答案对我无效,因为我在第二个屏幕中不使用输入处理器

我的解决方案是在设置屏幕后将Inputprocessor设置为null

Gdx.app.getApplicationListener().setScreen(新屏幕());

Gdx.input.setInputProcessor(null)

这件事让我头晕目眩。我在
show
方法中更改了屏幕,但之后调用了
Gdx.input.setInputProcessor(stage)
。在运行新屏幕的
show
方法后,该方法仍然完成,因此返回到上一阶段


因此,请确保在更改屏幕之前调用
Gdx.input.setInputProcessor(stage)
,或者在更改屏幕之后调用
return

这对我很有效。你能解释一下这两者是如何协同工作的吗?为什么?