2014-09-12 50 views
0

我是一个Android的初学者,并希望在我的settings/preferences-Activity中创建一个if-question。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文件中使用

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

有没有一种(简单)的方式来做类似“onClick”的事情?

+0

请参阅此链接http://stackoverflow.com/questions/17271717/checkboxpreference-listener – 2014-09-12 20:36:06

回答

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,只需检查监听器的内部。

+0

谢谢你的回答。 我应该在onPreferenceChange方法中做什么?因为android studio需要返回参数 – DominikTV 2014-09-12 20:52:48

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; 
    } 
}); 
+0

谢谢你answere,但它不是我想要的。 我认为@bgplaya是正确的方式:) – DominikTV 2014-09-12 20:44:59