30

同じアクティビティで複数回動的に追加されるカスタムがあります View

各カスタムビューインスタンスには、他のものの横にTextView子があります。TextViewにはIDがあり、各ビューインスタンスで同じです。

カスタムビューインスタンスごとに、アクティビティの作成時に異なる設定Textをしました。TextView画面を回転すると、アクティビティが再作成されますが、それぞれTextViewが同じように表示されますText(テキストは最後のインスタンスのテキストと同じです)。

これは、インスタンス状態の保存と復元によって一部の情報が自動的に保存されるためですが、この情報は明らかにIDにリンクされており、私の場合は問題が発生します。

特定のビューの自動状態保持を無効にする方法はありますか?

プロパティや設定、またはいくつかの回避策はありますか?

4

2 に答える 2

58

メソッドを使用できますView.setSaveEnabled (boolean enabled)

属性をxml使用して自動状態保存を無効にすることもできますsaveEnabledandroid:saveEnabled="false"

于 2013-03-20T15:18:05.233 に答える
1

すべての階層に setSaveEnabled を適用する必要がある場合:

    public static void SaveEnableViewAndChildren(this View view, bool val)
    {
        if (view == null)
            return;
        view.SaveEnabled = val;

        var viewGroup = view as ViewGroup;
        if (viewGroup == null)
            return;
        for (int i = 0; i < viewGroup.ChildCount; i++)
            SaveEnableViewAndChildren(viewGroup.GetChildAt(i), val);
    }
于 2016-11-25T10:58:36.440 に答える