2016-02-25 2 views
0

Я создаю простую программу для Android-менеджера профилей с помощью кнопки переключателя на Android. Есть 3 переключателя с именем General, Silent и Vibrate. Проблема все 3 переключатели работают вместеУправление кнопкой множественного переключателя в Android

enter image description here

Я хочу, чтобы главный выключатель должен быть отключен, когда молчаливый переключатель включается и бесшумный быть отключить, когда общий переключатель активирован.

Где мой код и что следует добавить?

general = (Switch) findViewById(R.id.generalSwitch); 
    silent = (Switch) findViewById(R.id.silentSwitch); 
    vibrate = (Switch) findViewById(R.id.vibrateSwitch); 

    myAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); 




    general.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v){ 
      myAudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL); 
      Toast.makeText(MainActivity.this,"General Mode Activated",Toast.LENGTH_LONG).show(); 
     } 
    }); 



    silent.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      myAudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT); 
      Toast.makeText(MainActivity.this,"Silent Mode Activated",Toast.LENGTH_LONG).show(); 
     } 
    }); 


    vibrate.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      myAudioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE); 
      Toast.makeText(MainActivity.this,"Vibrate Mode Activated", Toast.LENGTH_LONG).show(); 
     } 
    }); 

`

ответ

1

Тест с этим:

general.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 

      if(isChecked){ 
       silent.setChecked(false); 
      } 

     } 
    }); 

    silent.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 

      if(isChecked){ 
       general.setChecked(false); 
      } 

     } 
    }); 

если общий переключатель неактивен и бесшумный переключатель активен, при нажатии общем, это изменить свое состояние к активным и изменить бесшумный переключатель к неактивному.

0

Когда вы говорите, что отключенное первое, что я думаю, это не может быть трогательно. Как на картинке. Like this example

Если вы хотите сделать что-то вроде этого, вы должны добавить в setOnClickListener блоке что-то подобное;

silent.setEnabled(false) 

Но я думаю, вы имели в виду это; Когда тихий переключатель включен, общий выключатель выключен, а когда общий переключатель включен, тихий переключатель выключен Чем вы можете использовать метод setChecked. Нравится это;

general.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v){ 
      myAudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL); 
      Toast.makeText(MainActivity.this,"General Mode Activated",Toast.LENGTH_LONG).show(); 
silent.setChecked(false); 
     } 
    }); 



    silent.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      myAudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT); 
      Toast.makeText(MainActivity.this,"Silent Mode Activated",Toast.LENGTH_LONG).show(); 
general.setChecked(false); 
     } 
    });