Сохранение фона кнопки? - PullRequest
       19

Сохранение фона кнопки?

1 голос
/ 01 ноября 2019

У меня есть кнопка переключения, которая имеет фон. Я хочу сохранить это фоновое состояние, когда пользователь либо закрывает приложение, либо удаляется от MainActivity. Мне удалось сохранить состояние логического значения Toggle, но не фон изображения самого переключателя. У кого-нибудь есть идеи? Пожалуйста, смотрите мой код ниже для получения дополнительной информации.

private ToggleButton mtoggle;

public static final String SHARED_PREFS = "sharedPrefs";
public static final String M_TOGGLE = "mtoggle";

private boolean SwitchON_OFF;

Вот мои методы сохранения, загрузки и обновления. Снова сохранение состояния логического значения переключателя не представляет проблем. Просто не знаю, с чего начать сохранение состояния фона кнопки Toggle (фон меняется с серого на желтый после нажатия и наоборот). Необходимо сохранить каждое состояние этого.

public void saveData(){

    SharedPreferences sharedPreferences = getSharedPreferences(SHARED_PREFS,MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPreferences.edit();

    editor.putBoolean(M_TOGGLE,mtoggle.isChecked()); // saving toggle state no problem.


    editor.apply();

    Toast.makeText(this, "Saved", Toast.LENGTH_SHORT ).show();

}

public  void loadData(){
    SharedPreferences sharedPreferences = getSharedPreferences(SHARED_PREFS,MODE_PRIVATE);

    SwitchON_OFF = sharedPreferences.getBoolean(M_TOGGLE,false);

}

public void updateViews(){
    mtoggle.setChecked(SwitchON_OFF);
}

Ответы [ 2 ]

1 голос
/ 04 ноября 2019

Вы можете сделать это следующим образом: -

По вашему требованию вы можете использовать условие if.

Рисованные файлы: - для обоих цветов: -

1-й: -

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">

<stroke
    android:width="1dp"
    android:color="@color/sky_blue"
    android:drawable="@android:color/transparent" />

<solid android:color="@color/message_fragment_button" />

<corners
    android:bottomLeftRadius="@dimen/dp_10"
    android:bottomRightRadius="@dimen/dp_10"
    android:topLeftRadius="@dimen/dp_10"
    android:topRightRadius="@dimen/dp_10" />

</shape>

2-й: -

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">

<stroke
    android:width="1dp"
    android:color="@color/sky_blue"
    android:drawable="@android:color/transparent" />

<solid android:color="@color/sky_blue" />

<corners
    android:bottomLeftRadius="@dimen/dp_10"
    android:bottomRightRadius="@dimen/dp_10"
    android:topLeftRadius="@dimen/dp_10"
    android:topRightRadius="@dimen/dp_10" />

</shape>

А на Java: -

if (MessageConfirmed.equals("Yes")) {
        btn_confirm.setText("Confirmed");
        btn_confirm.setBackground(ContextCompat.getDrawable(context, 
R.drawable.confirm_button_blue));
        btn_confirm.setEnabled(false);

    } else {
        btn_confirm.setText("Confirm");
        btn_confirm.setBackground(ContextCompat.getDrawable(context, 
R.drawable.confirm_button_green));
        btn_confirm.setEnabled(true);

}

Но да, вынеобходимо сначала определить цвет фона в вашем XML-файле.

1 голос
/ 01 ноября 2019

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

...