在我的自定义视图中,我使用以下简单方法动态更改子视图:
private void changeChildView(final View oldView, final View newView) {
final int viewIndex = indexOfChild(oldView);
removeViewAt(viewIndex);
addView(newView, viewIndex);
}
在开始时 childView1 是放在 ViewGroup 上的。一旦用户在 childView1 上触发手势,我就会执行以下步骤:
我将 childView1 存储在自定义视图的全局变量中:
mTempView = childView1
然后我膨胀 childview2
changeChildView(childView1, childView2)
它就像一个魅力。但是,如果用户点击后退按钮,我需要恢复到应该存储在此时的全局变量中的 childView1。我确实通过以下方式恢复:
changeChildView(childView2, mTempView)
但是还原不起作用。我检查了 mTempView 是否包含视图,但它从未显示。奇怪的是,它会在我旋转后立即显示,这意味着视图已成功添加回还原过程中。