// устанавливаем переключатель громкости в положение ON
swVolume.setChecked(true);
// подключаем прослушиватель для проверки изменений в состоянии
swVolume.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
}
});
//проверяем текущее состояние перед отображением экрана
if(swVolume.isChecked()){
AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
am.setStreamVolume(
AudioManager.STREAM_RING,
am.getStreamMaxVolume(AudioManager.STREAM_RING),
0);
}
else {
swVolume.setChecked(false);
}
Может кто-нибудь сказать мне, почему я не могу добавить код if else в прослушиватель? и является ли функция слушателя только для просмотра состояния переключателя?
Я видел один пример в Интернете:
public class MainActivity extends Activity {
private TextView switchStatus;
private Switch mySwitch;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
switchStatus = (TextView) findViewById(R.id.switchStatus);
mySwitch = (Switch) findViewById(R.id.mySwitch);
//set the switch to ON
mySwitch.setChecked(true);
//attach a listener to check for changes in state
mySwitch.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
но я действительно не знаю, почему мне нужно дважды вводить оператор if-else, потому что даже если я удалю оператор if-else здесь, код все еще работает нормально. Кто-нибудь может мне объяснить?
if(isChecked){
switchStatus.setText("Switch is currently ON");
}else{
switchStatus.setText("Switch is currently OFF");
}
}
});
//check the current state before we display the screen
if(mySwitch.isChecked()){
switchStatus.setText("Switch is currently ON");
}
else {
switchStatus.setText("Switch is currently OFF");
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
Большое спасибо. :)
if-else
в слушатель? - person Mike M.   schedule 21.01.2017OnCheckedChangeListener
вам в этом не поможет. Он срабатывает только при изменении состоянияSwitch
. - person Mike M.   schedule 21.01.2017ContentObserver
в настройках системы - как показано в этом сообщении - но я Я не уверен, что это все еще работает. И нет, вам не обязательно нужен этот прослушиватель, если вы не разрешаете пользователю изменятьSwitch
. - person Mike M.   schedule 21.01.2017