Сохранить состояние кнопки переключения - PullRequest
0 голосов
/ 28 июня 2019

По умолчанию я установил переключатель в положение "истина". Затем, когда я перехожу к другим фрагментам в пределах того же действия, состояние кнопки переключения не изменяется, но когда я перехожу к другому действию и возвращаюсь к основному действию, состояние переключения будет возвращено к значению по умолчанию.

Как состояние по умолчанию верно. Я изменил его на false в Деятельности A. Я перешел к Деятельности B и вернулся к Деятельности A, тогда теперь кнопка переключения снова станет истинной. Я хочу, чтобы это было состояние, которое поставил пользователь. Любые решения?

Ответы [ 2 ]

3 голосов
/ 28 июня 2019

Используйте SharedPreferences, это просто файл с логикой KEY-VALUE, который сохраняет на нем несколько простых данных.SharedPreferences в основном используется для флагов (как ваш случай) или для хранения других простых настроек / информации:

private static void saveToggle(Context context, boolean isToggled) {
    final SharedPreferences sharedPreferences = context.getSharedPreferences("preferences", Context.MODE_PRIVATE);
    final SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putBoolean("toggle_value", isToggled).apply();
}

private static Boolean loadToggle(Context context){
    final SharedPreferences sharedPreferences = context.getSharedPreferences("preferences", Context.MODE_PRIVATE);
    return sharedPreferences.getBoolean("toggle_value", true);
}

Надеюсь, это поможет.

1 голос
/ 28 июня 2019

Вы можете реализовать логику сохранения состояния экземпляра при перезагрузке фрагмента в фоновом действии. Проблема с видом, то вы можете сделать что-то вроде:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    //Inflate the layout for this fragment or reuse the existing one
    View view = getView() != null ? getView() : 
    inflater.inflate(R.layout.fragment_fragment2, container, false);

    return view;
}

Используя это, он проверит, было ли создано более раннее представление для фрагмента или нет. Если это так, то он будет использовать это представление для создания нового представления, используя infalter. Надеюсь, это решит вашу проблему.

...