私のカスタム ビューでは、以下の簡単な方法を使用して、子ビューを動的に変更します。
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 にビューが含まれていることを確認しましたが、表示されません。奇妙なことに、回転するとすぐに表示されます。これは、元に戻すプロセスでビューが正常に追加されたことを意味します。