在 Android 中控制多个开关按钮

Controlling Multiple Switch button in Android

我正在使用 Android 中的切换按钮构建一个简单的配置文件管理器 android 应用程序。 有 3 个开关,名称为 General、Silent 和 Vibrate。 问题是所有 3 个开关都在协同工作

我希望通用开关在静音开关开启时关闭,静音在通用开关开启时关闭。

我的代码在哪里,应该添加什么?

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();
        }
    });

`

用这个测试:

    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);
            }

        }
    });

如果通用开关处于非活动状态而静音开关处于活动状态,则当您按通用时,这会将您的状态更改为活动状态并将静音开关更改为非活动状态。

当你说禁用时,我首先想到的是开关不能被触摸。就像图片中那样。

如果你想做这样的事情,你应该在 setOnClickListener 块中添加 类似 ;

silent.setEnabled(false)

但我认为你是这个意思; 当静音开关为ON时,通用开关为OFF,当通用开关为ON时,静音开关为OFF 比你可以使用 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);
        }
    });