Невозможно установить этот флажок в настройках. Все остальные делают - PullRequest
0 голосов
/ 08 июня 2019

Я использую 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

...