我想在我的设置活动中向我的 CheckBoxPreference 发出功能,但我不明白为什么我不能在我的应用程序上使用功能。我正在尝试使用 CheckBoxPreference 将整个应用程序的音频静音和取消静音。
设置活动.java
public class SettingsActivity extends PreferenceActivity {
Preference email_send;
boolean checkboxPreference;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MainSettingsFragment sfrag = new MainSettingsFragment();
getFragmentManager().beginTransaction().replace(android.R.id.content, sfrag).commit();
}
public static class MainSettingsFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences_m);
//this is where you put code preferences
Preference pref;
pref = findPreference("sounds");
pref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if (preference.toString().equals("true")) {
mute();
return true;
} else {
unmute();
return false;
}
}
});
}
}
沉默的
private void mute() {
//mute audio
AudioManager amanager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
amanager.setStreamMute(AudioManager.STREAM_NOTIFICATION, true);
}
取消静音
public void unmute() {
//unmute audio
AudioManager amanager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
amanager.setStreamMute(AudioManager.STREAM_NOTIFICATION, false);
}
构建错误
error: non-static method mute() cannot be referenced from a static context
error: non-static method unmute() cannot be referenced from a static context
更新**我摆脱了错误,但是在选中这些框时,它不会使应用程序静音。
public static class MainSettingsFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences_m);
final Preference sprefl
spref = findPreference("sounds");
spref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if (spref.isEnabled()) {
AudioManager manager = (AudioManager) getActivity().getSystemService(Context.AUDIO_SERVICE);
manager.setStreamVolume(AudioManager.STREAM_ALARM, 0, AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);
return true;
} else {
AudioManager manager = (AudioManager) getActivity().getSystemService(Context.AUDIO_SERVICE);
manager.setStreamVolume(AudioManager.STREAM_ALARM, 0, AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);
return false;
}
}
});