2014-09-12 32 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