0

私のカスタム ビューでは、以下の簡単な方法を使用して、子ビューを動的に変更します。

    private void changeChildView(final View oldView, final View newView) {
    final int viewIndex = indexOfChild(oldView);
    removeViewAt(viewIndex);
    addView(newView, viewIndex);
}

最初に、childView1 が ViewGroup に配置されます。ユーザーが childView1 でジェスチャをトリガーするとすぐに、次の手順を実行します。

  1. カスタム ビューのグローバル変数に childView1 を格納します。mTempView = childView1

  2. 次に、childview2を膨らませます

  3. changeChildView(childView1, childView2)

それは魅力のように機能します。しかし、ユーザーが戻るボタンを押した場合、この時点でグローバル変数に格納されているはずの childView1 に戻す必要があります。私は元に戻します:

changeChildView(childView2, mTempView)

しかし、リバースは機能しません。mTempView にビューが含まれていることを確認しましたが、表示されません。奇妙なことに、回転するとすぐに表示されます。これは、元に戻すプロセスでビューが正常に追加されたことを意味します。

4

0 に答える 0