在 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);
}
});
我正在使用 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);
}
});