Сохранение значения переключателей при разрушении активности и возврат их обратно при возобновлении активности - PullRequest
0 голосов
/ 18 января 2020

введите описание изображения здесь Добрый день, я хочу сохранить значение кнопок переключения при выходе из приложения и вернуть их обратно, когда пользователь снова запустит приложение. Я пытался использовать onSaveInstanceState, но он просто не работает. Любая помощь будет оценена. Спасибо.

редактировать: я также пытался использовать настройки. редактировать: я также пытался использовать настройки. редактировать: я также пытался использовать настройки. редактировать: я также пытался использовать настройки. редактировать: я также пытался использовать настройки. редактировать: я также пытался использовать настройки.


    @Override
    protected void onSaveInstanceState(Bundle savedInstanceState) {
        super.onSaveInstanceState(savedInstanceState);
        savedInstanceState.putBoolean("white", white.isChecked());
        savedInstanceState.putBoolean("yellow", yellow.isChecked());
        savedInstanceState.putBoolean("orange", orange.isChecked());
        savedInstanceState.putBoolean("red", red.isChecked());
        savedInstanceState.putBoolean("blue", blue.isChecked());
        savedInstanceState.putInt("whiteI", whiteI.getVisibility());
        savedInstanceState.putInt("yellowI", yellowI.getVisibility());
        savedInstanceState.putInt("orangeI", orangeI.getVisibility());
        savedInstanceState.putInt("redI", redI.getVisibility());
        savedInstanceState.putInt("blueI", blueI.getVisibility());

    }

    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        white.setChecked(savedInstanceState.getBoolean("white"));
        yellow.setChecked(savedInstanceState.getBoolean("yellow"));
        orange.setChecked(savedInstanceState.getBoolean("orange"));
        red.setChecked(savedInstanceState.getBoolean("red"));
        blue.setChecked(savedInstanceState.getBoolean("blue"));

        whiteI.setVisibility(savedInstanceState.getInt("whiteI"));
        yellowI.setVisibility(savedInstanceState.getInt("yellowI"));
        orangeI.setVisibility(savedInstanceState.getInt("orangeI"));
        redI.setVisibility(savedInstanceState.getInt("redI"));
        blueI.setVisibility(savedInstanceState.getInt("blueI"));


    }

    @Override
    protected void onPause() {
        super.onPause();
        SharedPreferences.Editor editPreferences = preferences.edit();
        editPreferences.putBoolean("white", white.isChecked());
        editPreferences.putBoolean("yellow", yellow.isChecked());
        editPreferences.putBoolean("orange", orange.isChecked());
        editPreferences.putBoolean("red", red.isChecked());
        editPreferences.putBoolean("blue", blue.isChecked());
        editPreferences.putInt("whiteI", whiteI.getVisibility());
        editPreferences.putInt("yellowI", yellowI.getVisibility());
        editPreferences.putInt("orangeI", orangeI.getVisibility());
        editPreferences.putInt("redI", redI.getVisibility());
        editPreferences.putInt("blueI", blueI.getVisibility());
        editPreferences.commit();

    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (savedInstanceState == null) Toast.makeText(this, "null", Toast.LENGTH_SHORT).show();
        setContentView(R.layout.activity_main);
        background = findViewById(R.id.imageViewBg);
        yellow = findViewById(R.id.tgBtnAlarm);
        orange = findViewById(R.id.tgBtnAlert);
        red = findViewById(R.id.tgBtnCritical);
        blue = findViewById(R.id.tgBtnRecession);
        white = findViewById(R.id.tgBtnNormal);

        yellowI = findViewById(R.id.imageViewYellow);
        redI = findViewById(R.id.imageViewRed);
        blueI = findViewById(R.id.imageViewBlue);
        orangeI = findViewById(R.id.imageViewOrange);
        whiteI = findViewById(R.id.imageViewWhite);

        btnExit = findViewById(R.id.btnExit);

        preferences = getSharedPreferences("pref",MODE_PRIVATE);
        white.setChecked(preferences.getBoolean("white"));
        yellow.setChecked(preferences.getBoolean("yellow"));
        orange.setChecked(preferences.getBoolean("orange"));
        red.setChecked(preferences.getBoolean("red"));
        blue.setChecked(preferences.getBoolean("blue"));
        whiteI.setVisibility(preferences.getInt("whiteI"));
        yellowI.setVisibility(preferences.getInt("yellowI"));
        orangeI.setVisibility(preferences.getInt("orangeI"));
        redI.setVisibility(preferences.getInt("redI"));
        blueI.setVisibility(preferences.getInt("blueI"));

        glide();
        allow();
        volume();

        btnExit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               finish();
            }
        });


    }

1 Ответ

1 голос
/ 18 января 2020

Попробуйте использовать SharedPreferences

SharedPreferences savePreferences = getSharedPreferences("pref",MODE_PRIVATE);
SharedPreferences.Editor editPreferences = savePreferences.edit();
editPreferences.putBoolean("white", white.isChecked());
editPreferences.putBoolean("yellow", yellow.isChecked());
editPreferences.putBoolean("orange", orange.isChecked());
editPreferences.putBoolean("red", red.isChecked());
editPreferences.putBoolean("blue", blue.isChecked());
editPreferences.putInt("whiteI", whiteI.getVisibility());
editPreferences.putInt("yellowI", yellowI.getVisibility());
editPreferences.putInt("orangeI", orangeI.getVisibility());
editPreferences.putInt("redI", redI.getVisibility());
editPreferences.putInt("blueI", blueI.getVisibility());
editPreferences.commit();

Для получения данных

    white.setChecked(savePreferences.getBoolean("white"));
    yellow.setChecked(savePreferences.getBoolean("yellow"));
    orange.setChecked(savePreferences.getBoolean("orange"));         
    red.setChecked(savePreferences.getBoolean("red"));
    blue.setChecked(savePreferences.getBoolean("blue"));    
    whiteI.setVisibility(savePreferences.getInt("whiteI"));
    yellowI.setVisibility(savePreferences.getInt("yellowI"));
    orangeI.setVisibility(savePreferences.getInt("orangeI"));
    redI.setVisibility(savePreferences.getInt("redI"));
    blueI.setVisibility(savePreferences.getInt("blueI"));
...