屏幕方向更改后,我的动态添加视图出现了一些奇怪的行为。我真的很感激这里的一些帮助......
我的活动有一个基本布局,它是一个包含 ScrollView 和 backButton 的 LinearLayout。
<LinearLayout
...>
<ScrollView
android:id="@+id/scrollView_containerForDynamicallyAddedLinearLayouts"
...>
</ScrollView>
<Button
android:id="@+id/backButton"
android:onClick="onClick"
.../>
</LinearLayout>
在我的 Activity 中,我动态地创建了很多 LinearLayouts,它们还包含一些用于在 LinearLayouts 之间切换的导航按钮。这些 LinearLayout 存储在 ArrayList (panelViewList) 中,并在运行时从 ScrollView 中添加和删除(取决于单击了哪个导航按钮)。backButton 只是从 ScrollView 中删除所有视图。
public void onClick(View view) {
if (view.getId() == R.id.backButton) {
scrollViewContainer.removeAllViews();
} else {
String target = ((Button) view).getText().toString();
scrollViewContainer.removeAllViews();
for (LinearLayout ll : panelViewList) {
if (ll.getContentDescription().toString().equals(target)) {
xmlVerticalScrollView.addView(ll);
break;
}
}
}
在屏幕方向改变之前,这真的很好,没有任何问题。屏幕方向更改后,当您单击动态添加的 LinearLayouts 中的导航按钮时不会发生任何事情(不删除视图,不添加目标视图)。但是单击后退按钮仍然可以正常工作(所有视图都将被删除)。为什么?
附加信息:我为单击后退按钮的情况和单击导航按钮的(其他)情况设置了调试器断点:方向更改后,当我单击动态创建的 LinearLayout 中的导航按钮时,检查scrollViewContainer 说所有的孩子都是空的(这是错误的)。但是当我点击后退按钮时,scrollViewContainer 有正确的孩子。这很奇怪……