checkBox onClick
Нужна помощь с чекбокс. На главной активности я чекбоксом включаю или отключаю музыку. Но так как у чекбокса метод onClick, следовательно при открытии приложения чекбокс не работает, до нажатия на него, а мне нужно выставить значение и чтобы при перезапуске приложения не нужно было снова тыкать на чекбокс.
public class Stage extends Activity {
CheckBox musicOff;
public SharedPreferences mSet;
public static final String NAME_PREFERENCES = "mysetting";
public static final String BOOL_CHECKBOX = "checkboxset";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_stage);
musicOff = findViewById(R.id.musicCb);
mSet = getSharedPreferences(NAME_PREFERENCES, Context.MODE_PRIVATE);
if(mSet.contains(BOOL_CHECKBOX)){
musicOff.setChecked(mSet.getBoolean(BOOL_CHECKBOX, true));
}
}
public void checkBoxClicked (View view) {
if (musicOff.isChecked()) {
startService(new Intent(this, MyService.class));
} else {
stopService(new Intent(this, MyService.class));
}
}
@Override
protected void onStop()
{
super.onStop();
mSet = getSharedPreferences(NAME_PREFERENCES, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = mSet.edit();
editor.putBoolean(BOOL_CHECKBOX, musicOff.isChecked()); //Чекбокс сохранение значения при выходе из приложения-/-активности
editor.apply();
}
}
Ответы (1 шт):
Автор решения: Andrew
→ Ссылка
Чтобы не плодить кучу одинаковых кусков кода, и чтобы все выглядело красиво предлагаю сделать отдельную функцию:
public void workingWithService(boolean enableService){
if(enableService){
startService(new Intent(this, MyService.class));
}
else{
stopService(new Intent(this, MyService.class));
}
}
тогда функция checkBoxClicked будет такой:
public void checkBoxClicked (View view) {
workingWithService(musicOff.isChecked())
}
а в onCreate() будет так:
if(mSet.contains(BOOL_CHECKBOX)){
Boolean enabled = mSet.getBoolean(BOOL_CHECKBOX, true);
musicOff.setChecked(enabled );
workingWithService(enabled);
}
И я бы советовал поставить в getBoolean(BOOL_CHECKBOX, true) по-умолчанию false чтобы музыка по-умолчанию была выключенной, но это уже на ваше усмотрение :)