Я использую 6 флажков в своем приложении. Все они используют одни и те же методы, потому что все они работают одинаково. Однако я пытаюсь сохранить состояние флажков в общих настройках пользователей, чтобы им не приходилось проверять их при следующем использовании приложения. Но этот флажок, «inputcheerControl», просто не будет привязываться к общим настройкам, как другие. Я не могу понять проблему.
Вот краткая практика тестирования, которая, возможно, поможет показать, что происходит. Я манипулирую флажком и использую кнопку для вывода двух команд ниже. Смотрите комментарии.
System.out.println(Prefs.getBoolean("Cheer_Control", false));
System.out.println(inputcheerControl.isChecked());
*snip touch output
//start of app. checkbox not enabled
06-07 17:24:39.801 30014-30014/com.ritchie.irldevapp I/System.out: false
06-07 17:24:39.801 30014-30014/com.ritchie.irldevapp I/System.out: false
*snip touch output
//ticked checkbox manually and test. not in shared preferences yet.
06-07 17:24:51.513 30014-30014/com.ritchie.irldevapp I/System.out: false
06-07 17:24:51.523 30014-30014/com.ritchie.irldevapp I/System.out: true
*snip touch output
//saved settings and tested
06-07 17:25:01.774 30014-30014/com.ritchie.irldevapp I/System.out: false
06-07 17:25:01.774 30014-30014/com.ritchie.irldevapp I/System.out: true
Наоборот, я могу сделать то же самое с другими текстовыми представлениями или флажками, и я получу истинный / истинный ответ. Я выйду из приложения, и они включены. Но этого флажка нет.
Вот код:
*snip
@SuppressLint("Registered")
class PrefsApplication extends MainActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Initialize the Prefs class
new Prefs.Builder()
.setContext(this)
.setMode(ContextWrapper.MODE_PRIVATE)
.setPrefsName(getPackageName())
.setUseDefaultSharedPreference(true)
.build();
}
}
public class MainActivity extends AppCompatActivity {
AsyncTask ircThread;
*snip
// checkboxes
CheckBox inputMods;
CheckBox inputSubs;
CheckBox inputVIP;
CheckBox inputBits;
CheckBox inputViewers;
CheckBox inputcheerControl;
//return mainactivity instance
private static MainActivity instance;
public static MainActivity getInstance() {
return instance;
}
public void setSettings() {
System.out.println("Saving user settings");
Prefs.putString("Username", String.valueOf(inputBotUser.getText()));
Prefs.putString("Oauth", String.valueOf(inputBotOauth.getText()));
Prefs.putString("Channel", String.valueOf(inputBotChan.getText()));
Prefs.putInt("Bits_Amount", Integer.parseInt(String.valueOf(inputBitsAmnt.getText())));
Prefs.putBoolean("Access_Mods", inputMods.isChecked());
Prefs.putBoolean("Access_Subs", inputSubs.isChecked());
Prefs.putBoolean("Access_VIP", inputVIP.isChecked());
Prefs.putBoolean("Access_Bits", inputBits.isChecked());
Prefs.putBoolean("Access_Viewers", inputViewers.isChecked());
Prefs.putBoolean("Cheer_Control", inputcheerControl.isChecked());
}
public void displaySettings() {
System.out.println("Displaying user settings");
//textviews
if (Prefs.contains("Username")) { inputBotUser.setText(Prefs.getString("Username", "")); }
if (Prefs.contains("Oauth")) { inputBotOauth.setText(Prefs.getString("Oauth", "")); }
if (Prefs.contains("Channel")) {inputBotChan.setText(Prefs.getString("Channel", "")); }
if (Prefs.contains("Bits_Amount")) {inputBitsAmnt.setText(String.valueOf(Prefs.getInt("Bits_Amount", 0))); }
//checkboxes
if (Prefs.contains("Access_Mods") && Prefs.getBoolean("Access_Mods", false)) { inputMods.setChecked(true); } else { inputMods.setChecked(false); }
if (Prefs.contains("Access_Subs") && Prefs.getBoolean("Access_Subs", false)) { inputSubs.setChecked(true); } else { inputSubs.setChecked(false); }
if (Prefs.contains("Access_VIP") && Prefs.getBoolean("Access_VIP", false)) { inputVIP.setChecked(true); } else { inputVIP.setChecked(false); }
if (Prefs.contains("Access_Bits") && Prefs.getBoolean("Access_Bits", false)) { inputBits.setChecked(true); } else { inputBits.setChecked(false); }
if (Prefs.contains("Access_Viewers") && Prefs.getBoolean("Access_Viewers", false)) { inputViewers.setChecked(true); } else { inputViewers.setChecked(false); }
if (Prefs.contains("Cheer_Control") && Prefs.getBoolean("Cheer_Control", false)) { inputcheerControl.setChecked(true); System.out.println("<<<< true"); } else { inputcheerControl.setChecked(false); System.out.println("<<<< false"); }
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
instance = this;
//vars
new Prefs.Builder()
.setContext(this)
.setMode(ContextWrapper.MODE_PRIVATE)
.setPrefsName(getPackageName())
.setUseDefaultSharedPreference(true)
.build();
//inputs
// text inputs
*snip
// buttons
inputbtnIRC = (Button) findViewById(R.id.button_irc);
inputbtnBT = (Button) findViewById(R.id.button_bt);
inputbtnPause = (Button) findViewById(R.id.button_pause);
inputbtnSave = (Button) findViewById(R.id.button_resetsys);
// checkboxes
inputMods = (CheckBox) findViewById(R.id.checkBox_mods);
inputSubs = (CheckBox) findViewById(R.id.checkBox_subs);
inputVIP = (CheckBox) findViewById(R.id.checkBox_vip);
inputBits = (CheckBox) findViewById(R.id.checkBox_bits);
inputViewers = (CheckBox) findViewById(R.id.checkBox_viewers);
inputcheerControl = (CheckBox) findViewById(R.id.checkBox_cheerControl);
//Display saved prefs
displaySettings();
*snip (your post has too much code)
// BT
inputbtnBT.setOnClickListener(new View.OnClickListener() {
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
@Override
public void onClick(View v) {
//BT button pressed
System.out.println(Prefs.getBoolean("Cheer_Control", false));
System.out.println(inputcheerControl.isChecked());
//displaySettings();
}
});
// save
inputbtnPause.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//save button pressed
setSettings();
}
});
// Reset
inputbtnSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Reset button pressed
}
});
}
@Override
public void onBackPressed() {
super.onBackPressed();
System.out.println("Back button pressed. Saving settings.");
setSettings();
}
*snip
Использована библиотека EasyPref