java - 保存按钮的背景?

标签 java android-studio save sharedpreferences

我有一个带有背景的切换按钮。我想在用户关闭应用程序或离开 MainActivity 时保存该背景状态。我设法保存切换 boolean 值的状态,但不保存切换本身的图像背景。有人有主意吗?请参阅下面我的代码以获取更多信息。

private ToggleButton mtoggle;

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

private boolean SwitchON_OFF;

这是我的保存、加载和更新方法。再次保存切换 boolean 值的状态是没有问题的。只是不知道从哪里开始保存切换按钮的背景状态(一旦按下,背景就会从灰色变为黄色,反之亦然)。需要保存它的每个状态。

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);
}

最佳答案

你可以这样做:-

根据您的要求,您可以使用if条件。

可绘制文件:- 两种颜色:-

第一:-

<?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>

第二:-

<?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 文件中定义初始背景颜色。

关于java - 保存按钮的背景?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58651726/

相关文章:

java - maven jar插件无法解析

java - 我的 java 项目出现错误

android - 街景在 android 应用程序中显示错误消息

Android 列出私有(private)应用存储中的文件

java - 没有找到类 org.json.JSONObject 的序列化器,也没有发现创建 BeanSerializer 的属性

java - quartz 表适用于不规则的小时间隔

java - 在应用程序销毁时保存变量不起作用

android - 使用外部类在 Activity 之间保存数据

android - BluetoothDevice getName() 方法在 Android 12 中返回 null

尝试上传到生产环境时,Android 签名的 APK 显示为未签名的 APK