2013-07-31 3 views
0

Следуя новым API, я создал довольно простой PreferenceFragment:андроид - изменение значения ListPreference от деятельности

public class PrefsFragment extends PreferenceFragment { 

@Override 
public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 

    addPreferencesFromResource(R.xml.preferences); 
} 

    } 

я использую это в моем Activity создан, чтобы дать пользователю возможность изменять настройки приложения:

public class SetPreferenceActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 

    getFragmentManager().beginTransaction() 
      .replace(android.R.id.content, new PrefsFragment()).commit(); 

} 

    } 

Теперь мне нужно изменить сводку ListPreference по выбору пользователя. Существует не findPreference() метод, определенный для Activity класс, , так как я могу получить желаемое предпочтение?

Извините, если ответ очевиден, я не очень знаком с новым API и всегда использовал PreferenceActivity, прежде чем он стал устаревшим ..

ответ

1

Вместо того чтобы делать new PrefsFragment() прямо в своем заявлении, где вы заменить фрагмент вы можете сделать это.

PreferenceFragment pFrag = new PrefsFragment(); 
PrefsFragment pf = (PrefsFragment)pFrag; 

getFragmentManager().beginTransaction() 
     .replace(android.R.id.content, pFrag).commit(); 

затем в вашем PreferenceFragment создавать общедоступный метод, который вы можете изменить то, что вы хотите

pf.changeMyPreference(); 
+0

После вашего советовать я пытался создать такой метод в моем PrefsFragment. Этот метод находит предпочтение, используя findPreference(), но всегда имеет значение null. Ключ на 100% правильный. Есть идеи? – Droidman

+0

хорошо я понял, что этот метод называется BEFORE addPreferencesFromResource (R.xml.preferences); поэтому предпочтение не может быть найдено. Ищете способ ... – Droidman

+0

Какой метод вызывается раньше? пытаетесь ли вы изменить предпочтение до его создания или после того, как был создан фрагмент, где значение изменилось, и вы хотите, чтобы что-то отображалось по-разному? – tyczj

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