Подтвердить что ты не робот

Android view отключает неявное сохранение состояния для некоторого вида

У меня есть custom View, который динамически добавляется несколько раз в одну активность.

Каждый из экземпляров пользовательского представления имеет помимо других вещей дочерний элемент TextView. TextView имеет ID, и он одинаковый для каждого экземпляра представления.

Для каждого пользовательского экземпляра представления я устанавливаю разные Text для TextView при создании активности. Когда я поворачиваю экран, активность воссоздается, но теперь каждый TextView отображает те же Text (текст такой же, как текст последнего экземпляра).

Это связано с тем, что сохранение и восстановление состояния экземпляра автоматически сохраняет некоторую информацию, но эта информация, очевидно, связана с идентификаторами и в моем случае создает проблему.

Есть ли способ отключить автоматическое сохранение состояния для определенных представлений?

Есть ли свойство или параметр или какое-либо обходное решение?

4b9b3361

Ответ 1

Вы можете использовать метод View.setSaveEnabled (boolean enabled).

Также можно отключить автоматическое сохранение состояния через xml с помощью атрибута saveEnabled android:saveEnabled="false"

Ответ 2

если вам нужно применить 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);
    }