Я работаю над проектом Android, построенным частично в kotlin и частично в java. Я пытаюсь передать информацию из класса фрагмента kotlin в класс Java. Я пришел к выводу, что существует проблема с передачей информации, поскольку я не получаю нужного значения. После некоторой отладки я увидел, что информация успешно сохраняется, однако при доступе к информации из общих настроек возвращается только значение по умолчанию.
Это код в классе kotlin. Когда кнопка нажата, она изменяет значение логической переменной на противоположное, устанавливает текст кнопки в значение true / false и сохраняет значение переменной в общих настройках.
btnStyle.setOnClickListener() {
styleHasChanged = !styleHasChanged;
if(styleHasChanged == true){
btnStyle.setText("true")
}else{
btnStyle.setText("false")
}
val sharedPref : SharedPreferences?= activity?.getPreferences(MODE_PRIVATE);
sharedPref?.edit()?.putBoolean("bla", styleHasChanged)?.apply()
}
Это класс Java. Общие настройки вызываются внутри функции, которая выбирает путь к файлу на основе полученного значения.
public static String getHtmlContent(Context context, String htmlContent, Config config) {
SharedPreferences sharedPreferences = context.getSharedPreferences("bla",MODE_PRIVATE);
boolean hasStyleChanged = sharedPreferences.getBoolean("bla", false);
//moj
String cssPath;
if (!hasStyleChanged) {
cssPath = String.format(context.getString(R.string.css_tag), "file:///android_asset/css/Style.css");
} else {
cssPath = String.format(context.getString(R.string.css_tag), "file:///android_asset/css/Style2.css");
}
Вот здесь и возникает проблема. Общие настройки в классе java всегда выбирают значение по умолчанию, независимо от того, нажата кнопка или нет.