Логическая ошибка в коде Java(Android Studio)

213
25 сентября 2021, 19:00

Я новичок в Java и Android Studio, решил сделать Spinner для переключения темы приложения в настройках, но программа работает не корректно.

1.Мне нужно чтобы при перезагрузке приложения Spinner сохранял своё положение. 2.При выборе "Светлая тема" в SharedPreferences сохраняется "Тёмная тема", при выборе "Темная тема" - "Тёмно-серая тема", "Тёмно-Серая тема" - "Светлая тема". Мне нужно исправить данное недоразумение.

Setting Activivty

public class SettingsActivity extends AppCompatActivity  {
    SharedPreferences colorPref;

    public static final String COLOR_PREF = "l";
    Spinner ThemeSpinner;
    String Theme;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_settings);
        colorPref = getSharedPreferences(COLOR_PREF, Context.MODE_PRIVATE);
//Spinner
        ThemeSpinner = (Spinner) findViewById(R.id.SpinnerTheme);
        final ArrayAdapter<?> adapter = ArrayAdapter.createFromResource(this, R.array.Themes, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        ThemeSpinner.setAdapter(adapter);
        ThemeSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                        @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) {
                 Theme = (String)adapterView.getItemAtPosition(position 
                colorPref = getPreferences(MODE_PRIVATE);
                boolean hasVisited = colorPref.getBoolean("hasVisited", false); 
                String savedTheme = colorPref.getString(COLOR_PREF, ""); 
                if (!hasVisited) {
                    SharedPreferences.Editor e = colorPref.edit();
                    String savedTheme_First = getString(R.string.Pink_White_rus);
                    savedTheme = savedTheme_First;                e.putString(COLOR_PREF, savedTheme);
                    e.putBoolean("hasVisited", true);
                    e.apply();
                }
                if(savedTheme != Theme){
                    SaveTheme();
                    ThemeUtils.changeToTheme(Theme);
                    Toast toast = Toast.makeText(getApplicationContext(), "Установлена : " + savedTheme, Toast.LENGTH_SHORT);
                    toast.show();
                }
            }
            @Override
            public void onNothingSelected(AdapterView<?> parent) {
            }
        });
    }
        public void SaveTheme(){
            colorPref = getPreferences(MODE_PRIVATE);
            SharedPreferences.Editor ed = colorPref.edit();
            ed.putString(COLOR_PREF, Theme);
            ed.apply();
        }

Array

<string-array name="Themes">
            <item>@string/Pink_White_rus</item>
            <item>@string/Pink_Dark_rus</item>
            <item>@string/Pink_VeryDark_rus</item>
        </string-array>

strings.xml

<string name="Pink_White_rus">Светлая тема</string>
    <string name="Pink_Dark_rus">Тёмно-серая тема</string>
    <string name="Pink_VeryDark_rus">Тёмная тема</string>
READ ALSO
split() по строковому литералу без удаления разделителя

split() по строковому литералу без удаления разделителя

Пробую найти правильное регулярное выражение, никак не выходит

228
Проблема с шифрованием

Проблема с шифрованием

Не получается выполнить задание, условие которого следующее: ТРАНСПОЗИЦИЯ С ФИКСИРОВАННЫМ ПЕРИОДОМ: В этом случае сообщение делится на группы...

109
Использование нескольких баз БД в Spring Boot

Использование нескольких баз БД в Spring Boot

Вопрос такой: Как подключить несколько БД к Spring Boot?

151