0

我想在我的设置活动中向我的 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;
            }
        }
    });
4

0 回答 0