जैसा कि here वर्णित है, मैं वरीयताप्रदर्शन को उप-वर्गीकृत कर रहा हूं और इसे एक गतिविधि के अंदर प्रदर्शित कर रहा हूं। वह दस्तावेज़ बताता है कि वरीयता परिवर्तन कैसे सुनें here, लेकिन केवल तभी जब आप वरीयता सक्रियता को उप-वर्गीकृत करते हैं। चूंकि मैं ऐसा नहीं कर रहा हूं, मैं वरीयता परिवर्तनों को कैसे सुनूं?वरीयता फ़्रेगमेंट के भीतर वरीयता परिवर्तनों को कैसे सुनें?
मैंने अपनी प्राथमिकताप्रदर्शन में ऑनशेयर प्रीफरेंस चेंजलिस्टर को कार्यान्वित करने का प्रयास किया है लेकिन ऐसा लगता है कि यह काम नहीं करता है (onSharedPreferenceChanged
कभी नहीं कहा जाता है)।
यह मेरा कोड अब तक है:
SettingsActivity.java
public class SettingsActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// Display the fragment as the main content.
getFragmentManager().beginTransaction().replace(android.R.id.content, new SettingsFragment()).commit();
}
}
SettingsFragment.java
public class SettingsFragment extends PreferenceFragment implements OnSharedPreferenceChangeListener
{
public static final String KEY_PREF_EXERCISES = "pref_number_of_exercises";
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// Load the preferences from an XML resource
addPreferencesFromResource(R.xml.preferences);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key)
{
//IT NEVER GETS IN HERE!
if (key.equals(KEY_PREF_EXERCISES))
{
// Set summary to be the user-description for the selected value
Preference exercisesPref = findPreference(key);
exercisesPref.setSummary(sharedPreferences.getString(key, ""));
}
}
}
preferences.xml
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<EditTextPreference
android:defaultValue="15"
android:enabled="true"
android:key="pref_number_of_exercises"
android:numeric="integer"
android:title="Number of exercises" />
</PreferenceScreen>
इसके अलावा, प्राथमिकता परिवर्तन भी वरीयता परिवर्तन सुनने के लिए सही जगह है या क्या मुझे गतिविधि में यह करना चाहिए?
आपके आखिरी प्रश्न के लिए यह सब आपके डिजाइन ढांचे पर निर्भर करता है। एक एमवीसी या एमवीपी दृष्टिकोण का उपयोग करने के लिए एंड्रॉइड के साथ करना मुश्किल है, लेकिन मैं अपने सभी कार्यों को गतिविधि (नियंत्रक) में टुकड़े की मेजबानी करने की कोशिश करता हूं, और टुकड़ा केवल यूई (देखें/प्रस्तुतकर्ता) –