java - android 复选框首选项获取和设置 boolean 值

标签 java android checkbox preference

我是 android 的初学者,我尝试制作一个带有首选项 Activity 的简单手电筒应用程序。所以我的问题是;我想让灯光和声音设置成为可选的复选框。

设置.xml

  <PreferenceCategory
     android:title="@string/sct_behaviour">

     <CheckBoxPreference
       android:key="pref_light"
       android:title="@string/st_pref_light"
       android:summary="@string/ss_pref_light"
       android:defaultValue="true"
       />
    <CheckBoxPreference
       android:key="pref_switch_sound"
       android:title="@string/st_pref_sound"
       android:summary="@string/ss_pref_sound"
       android:defaultValue="true"
       />
    <CheckBoxPreference
       android:key="pref_notification_sound"
       android:title="@string/st_pref_notification_sound"
       android:summary="@string/ss_pref_notification_sound"
       android:defaultValue="true"
       />

设置.java

public class Settings extends PreferenceActivity{

@SuppressWarnings("deprecation")
@Override
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.settings);

    CheckBoxPreference pLight = (CheckBoxPreference)getPreferenceManager().findPreference("pref_light");

    pLight.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {

        @Override
        public boolean onPreferenceChange(Preference preference, Object newValue) {

            boolean myValue = (Boolean) newValue;

            if(myValue){
            }

                    //NEED SOME HELP IN THERE


            return true;
        }
    });

我的turnOnFlash函数;

 private void turnOnFlash() {
    if (!isFlashOn) {
        if (camera == null || params == null) {
            return;
        }

        params = camera.getParameters();
        params.setFlashMode(Parameters.FLASH_MODE_TORCH);
        camera.setParameters(params);
        camera.startPreview();
        isFlashOn = true;

        // changing button/switch image
        toggleButtonImage();

     // play sound
        playSound();
    }
}

onStart函数

@Override
protected void onStart() {
    super.onStart();
    if(VERBOSE) Log.v(TAG, "++ ON START ++");
    // on starting the app get the camera params
    getCamera();
turnOnFlash(value);
}

我想由用户选择将这个 true 或 false 值设置为 onStart 周期。并且不知道如何实现。

最佳答案

如果我理解正确,你应该在 Resume() 上获得偏好并采取相应的行动:

protected void onResume() {
    super.onResume();
    if(VERBOSE) Log.v(TAG, "++ ON START ++");
    // on starting the app get the camera params

    SharedPreferences prefs =   PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    boolean lightPref = prefs.getBoolean("pref_light", true);
    getCamera();
    turnOnFlash(lightPref);
}

关于java - android 复选框首选项获取和设置 boolean 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22887515/

相关文章:

java - GWT、Eclipse 插件如何重命名项目以及 .gwt.xml 文件?尝试这样做时出现错误

java - 如何提取两个 "/"字符之间的字符串

android - 在 Jenkins 中使用 Ant 复制文件

android - 如何仅在jetpack compose中在底部添加边框

android - 如何在 ListView 中滚动时保存 CheckBox 的状态?

java - 如何从 MySql PhpMyadmin 本地主机访问用户电子邮件和密码

java - 如何在两侧使用 Active-mq (jBoss EAP 7.2) 配置远程队列

android - Android 导航组件中的叠加 fragment

javascript - jquery 添加新的复选框,当点击新的复选框时,它什么也没有发生

java - JCheckbox 更改监听器收到鼠标悬停事件的通知