设置活动中的if()

时间:2014-09-12 20:31:35

标签: java android android-preferences preferenceactivity

我是Android初学者,想在我的设置/偏好设置 - 活动中提出一个if问题。

这是我的Preferences.java:

package net.dominik.genpush;

import android.os.Bundle;
import android.preference.PreferenceActivity;

public class Preferences extends PreferenceActivity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.prefs);
    }
}

...和我的Prefs.xml:

<?xml version="1.0" encoding="utf-8"?>

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">

    <CheckBoxPreference
        android:key="pushCheckBox"
        android:title="@string/pushnachr_headline"
        android:summary="@string/pushnachr_explain"
        android:defaultValue="true">

    </CheckBoxPreference>

</PreferenceScreen>

现在我想制作类似

的东西
public void onCheckboxPush(View b)
    {
        if (pushCheckBox.isChecked())
        {
           //CODE
        }
        else...

但不知道如何在复选框更改时启动方法。 另一方面,我可以使用

我的activity.xml-File中的

android:onClick =“MethodeNameHere”。这在我的PreferenceActivity类中不起作用,因此没有消息。

是否有(简单)方式以类似方式执行“onClick”之类的操作?

2 个答案:

答案 0 :(得分:2)

您可以为复选框设置侦听器。

CheckBoxPreference checkBox = (CheckBoxPreference) findPreference("pushCheckBox");
checkBox.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
            @Override
            public boolean onPreferenceChange(Preference preference, Object value) {
                //your code here
                return true;
            }
});

根据documentation,返回true将使用新值更新“首选项”的状态。

如果检查了checkBox,只需检查侦听器内部。

答案 1 :(得分:0)

如果您只是想让一个属性依赖另一个属性,则可以使用android:dependency属性。那会做你想要的吗?例如,

    <CheckBoxPreference
         android:key="pushCheckBox"
         android:title="@string/pushnachr_headline"
         android:summary="@string/pushnachr_explain"
         android:defaultValue="true">

    <!-- This setting will be disabled if pref_one is not checked -->
    <CheckBoxPreference
        android:defaultValue="false"
        android:key="preference_two"
        android:dependency="pushCheckBox"
        android:title="Pref Two" />

但是,如果你真的只想让click事件做其他事情,可以在onResume方法中添加这样的东西。

Preference pushCheckBox = findPreference("pushCheckBox");
pushCheckBox.setOnPreferenceClickListener(new OnPreferenceClickListener() {

    @Override
    public boolean onPreferenceClick(Preference preference) {

        // do something here

        return false;
    }
});