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 чтобы музыка по-умолчанию была выключенной, но это уже на ваше усмотрение :)

→ Ссылка