首页 > 解决方案 > Java Android如何将多个复选框保存到字符串如果选中并存储到SharedPref并将其作为字符串检索

问题描述

所以我有 2 个屏幕一个来存储另一个来检索。我最终想要的是将选中的复选框存储到 sharedPref 中,将其作为 STRING 检索并将其放入 ArrayList 以随机播放已选择的随机 STRING。

到目前为止,我尝试了许多解决方案,但都没有奏效。我也总是得到未选中的复选框。即使我只选择一个复选框,我也只想检查。任何建议将不胜感激。

编辑:我已经解决了这个问题……至少现在是这样。查看 UpdateReceive.java 以查看解决方案。但是对于其他屏幕,我将有 9 个复选框,而且这样做的可能性太繁琐了。那么有没有更好的方法呢?

存储.java

SharedPreferences sharedMode = getSharedPreferences("MySharedMode", Context.MODE_PRIVATE);
final SharedPreferences.Editor editor = sharedMode.edit();
editor.clear();
editor.commit();

        if ( cbCool.isChecked() || cbHeat.isChecked()) {
            editor.putBoolean("Cool", cbCool.isChecked());
            editor.putBoolean("Heat", cbHeat.isChecked());
            editor.commit();
}

接收.java

SharedPreferences sharedMode = getSharedPreferences("MySharedMode", Context.MODE_PRIVATE);
String heat = String.valueOf(sharedMode.getBoolean("Heat", false));
String cool = String.valueOf(sharedMode.getBoolean("Cool", false));

if (heat != null && cool != null) {
    String m_heat = "Heat";
    String m_cool = "Cool";
    List<String> list = new ArrayList<String>();
    list.add(m_heat);
    list.add(m_cool);
    Collections.shuffle(list);
    String randMode = list.get(0);
    tvMode.setText(randMode);
}

更新接收.java

if (heat == "true" && cool != "true") {
        tvMode.setText("Heat");
    }
    else if (heat != "true" && cool == "true") {
        tvMode.setText("Cool");
    }
    else if (heat =="true" && cool == "true") {
        String m_heat = "Heat";
        String m_cool = "Cool";
        List<String> list = new ArrayList<String>();
        list.add(m_heat);
        list.add(m_cool);
        Collections.shuffle(list);
        String randMode = list.get(0);
        tvMode.setText(randMode);
    }

标签: javaandroidcheckboxandroid-sharedpreferences

解决方案


推荐阅读