0

我正在使用 Android 中的 Switch Button 构建一个简单的配置文件管理器 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();
        }
    });

`

4

2 回答 2

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

        }
    });

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

于 2016-02-25T21:56:22.820 回答
0

当您说禁用时,我想的第一件事是开关不能被触摸。就像图片中一样。 像这个例子

如果你想做这样的事情,你应该在 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);
        }
    });
于 2016-02-25T21:58:23.673 回答