android एकल पृष्ठ वरीयता सक्रियता w/नहीं हेडर/टुकड़े?




सेटिंग अप्प (2)

मैं कुछ ऐसा करने की कोशिश कर रहा हूं जो मुझे लगता है कि काफी आसान है, लेकिन मैं वरीयता एक्टिविटी क्लास और एक्सएमएल वरीयता-हेडर टैग का उपयोग करके इसे पूरा करने के तरीके से परेशान हूं।

जब उपयोगकर्ता ऐप सेटिंग्स आइकन टैप करता है तो मैं उन्हें चेकबॉक्स और सूचियों की एक छोटी सूची के साथ प्रस्तुत करना चाहता हूं। मेरे पास केवल एक वरीयता खंड है। वरीयता खंड के लिए एकल हेडर दिखाने के लिए अब तक मैं वरीयता एक्टिविटी एक्सएमएल फाइल (प्राथमिकताएं। एक्सएमएल, और वरीयता खंड xmls) सेट कर सकता हूं। जब उपयोगकर्ता उस शीर्षलेख का चयन करता है तो प्राथमिकता स्क्रीन बिल्कुल ठीक है, मैं इसे कैसे चाहता हूं, हालांकि, मैं पहली हेडर स्क्रीन दिखाने को छोड़ने का कोई तरीका नहीं समझ सकता।

ऐसा लगता है कि सेटिंग / प्राथमिकता आइकन टैप करने के लिए एक कचरा लगता है, फिर एक एकल शीर्षलेख दिखाएं जिसे वास्तविक सेटिंग्स / प्राथमिकताओं पर जाने के लिए टैप किया गया हो।

मैं समझता हूं कि यदि आप अपनी वरीयताओं को वर्गीकृत करना चाहते हैं, तो यह बहुत उपयोगी हो सकता है, लेकिन कुछ सरल के लिए, यह ओवरहेड जोड़ता है और बदले में लगता है।

मुझे उम्मीद है कि मैं स्पष्ट था। संक्षेप में मेरा प्रश्न है:

वरीयता एक्टिविटी क्लास और वरीयता-हेडर टैग का उपयोग करने के लिए नया पसंदीदा तरीका क्या है, बिना किसी हेडर वाले विकल्पों की एक स्क्रीन दिखाएं?

कुछ और देखने के बाद ऐसा लगता है कि मैं ऐसा करने की कोशिश कर रहा हूं जो पुराने तरीके से सीधे तरीके से किया गया था। मैं किसी भी बहिष्कृत कार्यों का उपयोग किए बिना ऐसा करने की कोशिश कर रहा हूं।

अग्रिम धन्यवाद, बी


मैं एक ऐसे उत्तर की तलाश में था जो इस सवाल से मेल खाता था। आखिरकार, मैंने इसे कई अन्य स्रोतों से बाहर किया। उन लोगों के लिए जो अभी भी इसका उत्तर दे सकते हैं, यहां मेरे लिए क्या काम किया गया है। (नोट - इस परियोजना में न्यूनतम और लक्ष्य एसडीके 15 पर सेट हैं।)

  1. वरीयताओं को डंप करें, आपको उनकी आवश्यकता नहीं होगी।
  2. एकल पृष्ठ सेटिंग्स के साथ एक वरीयता स्क्रीन बनाएँ।
  3. वरीयता गतिविधि वर्ग बनाएं (सेटिंग्स सेटिंग्स नीचे)।
  4. वरीयता फ़्रेगमेंट (नीचे स्थानफ्रेमेंट) को विस्तारित करने वाली एक इनलाइन क्लास बनाएं।
  5. मेनिफेस्ट में कक्षा को परिभाषित करें।
  6. कार्य शुरू करें - नीचे मेनू कोड देखें।

वरीयता वर्ग जो एकल सेटिंग्स स्क्रीन प्रदर्शित करता है।

public class SettingsActivity extends PreferenceActivity {

    private final static String TAG = "SettingsAcitivity";

    public SettingsActivity() {}

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        MyLog.d(TAG, "onCreate");
        getFragmentManager().beginTransaction()
                .replace(android.R.id.content, new LocationFragment()).commit();
    }

    public class LocationFragment extends PreferenceFragment {

        private final static String TAG = "LocationFragment";

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            MyLog.d(TAG, "onCreate");
            addPreferencesFromResource(R.xml.locationsettings);
        }
    }
}

सेटिंग्स को प्रदर्शित करने के लिए कोड:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    MyLog.d(TAG, "onOptionsItemSelected");
    switch (item.getItemId()) {
    case R.id.menu_main_help:
        break;
    case R.id.menu_main_about:
        break;
    case R.id.menu_main_settings:
        MyLog.d(TAG, "Settings");
        Intent settingsIntent = new Intent(this, SettingsActivity.class);
        startActivity(settingsIntent);
        break;
    }
    return true;
}

बैक कुंजी सेटिंग्स एक्टिविटी को समाप्त करता है। अंतर्निहित प्राथमिकता दिनचर्या किसी भी बदलाव को बचाती है। ऑनर्यूसम फ़ंक्शन में मेरे पास getSettings () है जो कॉलिंग गतिविधि (इस मामले में मुख्य क्रियाशीलता) द्वारा उपयोग की जाने वाली किसी भी बदली गई सेटिंग्स को अपडेट करता है।

बस।


नया पसंदीदा तरीका किसी भी गतिविधि की मुख्य सामग्री के रूप में एक वरीयता फ्रेगमेंट दिखाने के लिए है। इसे PreferenceActivity आवश्यकता नहीं है। एपीआई डेमो नमूना देखें

public class FragmentPreferences 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 PrefsFragment()).commit();
    }


    public static class PrefsFragment extends PreferenceFragment {

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            // Load the preferences from an XML resource
            addPreferencesFromResource(R.xml.preferences);
        }
    }

}  




android-preferences