Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 删除视图的子级并读取后,视图将无法正确显示_Java_Android_Android View - Fatal编程技术网

Java 删除视图的子级并读取后,视图将无法正确显示

Java 删除视图的子级并读取后,视图将无法正确显示,java,android,android-view,Java,Android,Android View,我创建了一个包含两个视图的视图。一旦将一个视图设置为等候室(a)和第二个视图(B),就可以接听电话 调用到达视图a后,第二个视图将是invoke(B)。它起作用了。如果用户完成了交互,他应该返回视图(A)。不幸的是,这不起作用 下面是调用视图B的代码。这很好 // Add view to content OVSLobbyActivity.this.rootWaitingRoom.view.setVisibility(View.GONE); OVSLobbyActivity.this.root.r

我创建了一个包含两个视图的视图。一旦将一个视图设置为等候室(a)和第二个视图(B),就可以接听电话

调用到达视图a后,第二个视图将是invoke(B)。它起作用了。如果用户完成了交互,他应该返回视图(A)。不幸的是,这不起作用

下面是调用视图B的代码。这很好

// Add view to content
OVSLobbyActivity.this.rootWaitingRoom.view.setVisibility(View.GONE);
OVSLobbyActivity.this.root.removeChild(OVSLobbyActivity.this.rootWaitingRoom);
OVSLobbyActivity.this.root.appendChild(OVSLobbyActivity.this.rootCallRoom);
OVSLobbyActivity.this.rootCallRoom.view.setVisibility(View.VISIBLE);

// Set fullscreen
OVSLobbyActivity.this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
OVSLobbyActivity.this.onWindowFocusChanged(true);

// force to change the layout
root.view.invalidate();
root.view.requestLayout();
下面是隐藏视图B并再次显示视图A的代码。这并不奏效。这里的问题是,只会显示一个白色页面。活动中的元素丢失

this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN, WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
this.onWindowFocusChanged(false);


this.rootCallRoom.view.setVisibility(View.GONE);
this.root.removeChild(OVSLobbyActivity.this.rootCallRoom);
this.root.appendChild(OVSLobbyActivity.this.rootWaitingRoom);
this.rootWaitingRoom.view.setVisibility(View.VISIBLE);

// force to change the layout
root.view.invalidate();
root.view.forceLayout();
root.view.requestLayout();
你知道怎么了吗?
谢谢您的帮助。

解决方案是必须重新计算视图的大小。重新计算度量值后,必须执行以下行:

this.view.requestLayout()


之后将显示正确的视图。

解决方案是必须重新计算视图的大小。重新计算度量值后,必须执行以下行:

this.view.requestLayout()

之后将显示正确的视图