SharedPreference помнить, флажок виден и отмечен - PullRequest
0 голосов
/ 11 апреля 2020

У меня есть флажок, который невидим, однако, когда я нажимаю на элемент меню, флажок становится видимым. Как должны выглядеть SharedPreferences, если флажок установлен, и если я покидаю приложение и возвращаюсь в приложение, чтобы флажок оставался видимым. Теперь, когда я покидаю приложение и флажок установлен, и когда я возвращаюсь в приложение, флажок невидим и не помнит, что флажок был установлен.

    <CheckBox
        android:id="@+id/my_check"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:text="Save Audio file"
        android:textColor="#000000"
        android:layout_marginTop="20dp"
        android:visibility="invisible"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />



private CheckBox my_check;

    // onCreate
    addListenerOnSaveAudio();


    switch (item.getItemId()) {

        case R.id.save_audio:
    saveAudio.setVisibility(View.VISIBLE);

    }


public void addListenerOnSaveAudio() {

    my_check = (CheckBox) findViewById(R.id.my_check);

    my_check.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            if (((CheckBox) v).isChecked()) {
                // My code
            } else {
                saveAudio.setVisibility(View.INVISIBLE);
            }

        }
    });

}

Ответы [ 3 ]

0 голосов
/ 12 апреля 2020
private boolean state;
private SharedPreferences sharedPreferences;
private Checkbox my_check;
public void addListenerOnSaveAudio() {
   //Instance for save state of my_check
   sharedPreferences = getSharedPreferences("name_preferences",Context.MODE_PRIVATE);
   my_check = (CheckBox) findViewById(R.id.my_check);
   // If my check not exist by default is false else true
   state = sharedPreferences.getBoolean("my_check", false);
   my_check.setChecked(state);
   my_check.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            //When do click in my_check will change state in preferences and when open your app is apply changes in view.
            sharedPreferences.edit()
              .putBoolean("my_check",isChecked);
            if (isChecked) {
              // My code
            } else {
               saveAudio.setVisibility(View.INVISIBLE);
            }
        }
    });
}
0 голосов
/ 12 апреля 2020

Вы можете использовать onCheckedChanged(), чтобы зарегистрировать прослушиватель на checkBox, а затем сохранить его статус проверки в общем предпочтении.

И получать значение общего предпочтения при каждом запуске приложения, т. Е. В onCreate() method

Поэтому измените onCreate() вашей активности и addListenerOnSaveAudio(), как показано ниже

public class MyActivity extends AppCompatActivity implements View.OnClickListener {

    private CheckBox my_check;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity1);

        my_check = findViewById(R.id.my_check);

        SharedPreferences sharedPrefs = getSharedPreferences("sharedPrefs", MODE_PRIVATE);
        boolean isChecked = sharedPrefs.getBoolean("checkValue", false); // default value is false
        my_check.setChecked(isChecked);


        addListenerOnSaveAudio();


    }


    public void addListenerOnSaveAudio() {

        my_check.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                SharedPreferences.Editor editor = sharedPrefs.edit();
                editor.putBoolean("checkValue", isChecked);
                editor.apply();
                if (!isChecked)
                    saveAudio.setVisibility(View.INVISIBLE);
            }
        });
    }
}
0 голосов
/ 11 апреля 2020

Вот do c для sharedPreference и как его использовать. Вам нужно сохранить состояние вашего флажка, когда кто-то нажимает на ваше меню, чтобы вы могли использовать:

// in onCreate
Context context = getActivity();
SharedPreferences preferences = context.getSharedPreferences(
        "NAME OF YOUR CHOICE", Context.MODE_PRIVATE);

CheckBox checkBox = findViewById(R.id.my_check);
SharedPreferences.Editor editor = preferences.edit();
if(preferences.contains("my_check") && preferences.getBoolean("my_check",false) == true) {
   checkBox.setChecked(true);
}else {
    checkBox.setChecked(false);

}
checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
        if(checkBox.isChecked()) {
            editor.putBoolean("my_check", true);
            editor.apply();
        }else{
            editor.putBoolean("my_check", false);
            editor.apply();
        }
    }
}); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...