PreferenceActivity öğesini "Preferences" adlı bir alt sınıfla genişleten eski kodum var. OnSharedPreferenceChangeListener bulunmaktadırPreferenceActivity nasıl kullanılır veya "bulunur"?
Intent intent = new Intent(this, Preferences.class);
this.startActivity(intent);
bir fragmanı (değil PreferenceActivity alt sınıfı), ancak/Özel bir tercih niteliklerini değiştirmek, aşağıdakine benzer kontrol etmek amacıyla PreferenceActivity başvuru ihtiyacı olan bir aşağıdaki gibi PreferenceActivity çağrılır: Burada "prefActivity" PreferenceActivity öğesine yapılan referanstır. Bir tercih oluşturulduğunda PreferenceActivity'ye bir referansı nasıl kaydedeceğinizi veya gerektiğinde PreferenceActivity'yi nerede bulabileceğini önerebilir mi?
DÜZENLEME: Hiyerarşileri göstermeye ve netleştirmeye yardımcı olmak için çok fazla basitleştirilmiş kod da dahil olmak üzere.
FragmentActivity CPActivity, CPFragment öğesini başlatır ve isteğe bağlı olarak (bir tuşa basma) PreferenceActivity alt sınıfını ("Tercihler" olarak adlandırılır) çıkarmak için bir Niyet oluşturur.
public class CPActivity extends FragmentActivity
{
public static CPActivity inst;
private CPFragment mFragmentCP;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
inst = this;
mFragmentCP = new CPFragment();
}
public void onSettingsButtonPressed() {
// Bring up the Preferences menu
Intent intent = new Intent(this, Preferences.class);
this.startActivity(intent);
}
}
CPFragment, paylaşılan tercih dinleyicimizdir (diğer şeylerin yanı sıra). Bu kodda, özel bir tercih denetimi/girdisini (yani tercih değerinin kendisi değil, tercih denetimindeki öznitelikler, örneğin bir CheckBoxPreference) değiştirmek istediğimiz yer burasıdır. Burada yapmak isteriz, çünkü ilgili verilerin hesaplandığı yer burasıdır.
public class CPFragment extends Fragment implements OnSharedPreferenceChangeListener
{
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
// In response to preference changes, we want to modify the PreferenceActivity controls.
// So it seems we would need a reference to the PreferenceActivity subclass "Preferences
}
}
Ve nihayet, PreferenceActivity alt sınıf "Tercihler" does biraz daha Ayarlar görünümü getirmek daha.
public class Preferences extends PreferenceActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences_cp);
}
}
Ben de belirtildiği gibi, biz (PreferenceActivity aksine) CPFragment bulunan Özel Tercihi değiştirmek edebilmek için tercih ediyorum. Bu nedenle, CPFragment'te onSharedPreferenceChangeListener olarak yanıt verirken PreferenceActivity değerini bulmanın bir yolunu arıyordum.
Sanırım sorularınız belirsiz olduğundan aşağıya iniyorsunuz. Lütfen ne sorduğunuzu açıklığa kavuşturun. "Tercihler" etkinliğinizi bir "Fragment" den güncellemeye mi çalışıyorsunuz? Aktiviteden de bir “OnSharedPreferenceChangeListener” kaydedebilirsiniz. –
Hmmm ... belirsiz ne olduğundan emin değilim, "OnSharedPreferenceChangeListener başka bir parçada (PreferenceActivity alt sınıfında değil) var". Ama bu diğer parçada özel bir tercih değiştirmeniz gerekiyor. Bu nedenle, özel tercihi değiştirmek için PreferenceActivity'e bir şekilde ihtiyacım var. –