2014-09-12 2 views
0

Я начинаю Android и хочу сделать if-question в моих настройках/настройках-Activity.if() в настройках Activity

Вот мой 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... 

, но дон Не знаю, как я могу начать метод, когда галочка изменится. Другим способом я мог бы использовать

android: onClick = "MethodeNameHere" в моем файле activity.xml. Это не работает в моем классе PreferenceActivity, поэтому нет сообщения.

Есть ли (простой) способ сделать что-то вроде «onClick» аналогичным образом?

+0

См. Эту ссылку http://stackoverflow.com/questions/17271717/checkboxpreference-listener –

ответ

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 возвращающие обновит состояние Preference с новым значением.

Просто проверьте внутри слушателя, если checkbox установлен.

+0

Спасибо за ваш ответ. Что мне делать в методе onPreferenceChange? Поскольку Android-студия хочет иметь возвращаемый аргумент – DominikTV

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" /> 

Но, если вы действительно просто хотите получить событие щелчка, чтобы сделать что-то еще, что-то вроде этого в методе onResume.

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

    @Override 
    public boolean onPreferenceClick(Preference preference) { 

     // do something here 

     return false; 
    } 
}); 
+0

Спасибо, что вы отвечаете, но это не то, что я хотел. Я думаю, что @bgplaya идет правильным путем :) – DominikTV

Смежные вопросы