@ ग्रेट विल्सन बहुत बहुत धन्यवाद! एंड्रॉइड कोडिंग के लिए एक noob के रूप में, मैं कई घंटों के लिए वरीयताओं की असंगति के मुद्दे के साथ फंस गया हूं, और मुझे यह बहुत निराशाजनक लगता है कि उन्होंने नए तरीकों के लिए कुछ तरीकों / दृष्टिकोणों का उपयोग किया है जो पुराने एपीआई द्वारा समर्थित नहीं हैं। उपकरणों की एक विस्तृत श्रृंखला में अपने एप्लिकेशन को काम करने के लिए सभी प्रकार के वर्कआरा का सहारा लेना पड़ता है। यह वास्तव में निराशाजनक है!
आपकी कक्षा बहुत अच्छी है, इसके लिए आप नए APIs में काम करते रहने की अनुमति देते हैं। जब से मैं उपकरणों की एक विस्तृत श्रृंखला तक पहुँचने की कोशिश कर रहा हूँ मैंने इसे थोड़ा सा पूर्व एपीआई 11 उपकरणों के साथ-साथ नए एपीआई में काम करने के लिए इसके साथ थोड़ा छेड़छाड़ की:
import android.annotation.TargetApi;
import android.os.Bundle;
import android.preference.PreferenceActivity;
import android.preference.PreferenceFragment;
public class MyPrefsActivity extends PreferenceActivity
{
private static int prefs=R.xml.myprefs;
@Override
protected void onCreate(final Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
try {
getClass().getMethod("getFragmentManager");
AddResourceApi11AndGreater();
} catch (NoSuchMethodException e) { //Api < 11
AddResourceApiLessThan11();
}
}
@SuppressWarnings("deprecation")
protected void AddResourceApiLessThan11()
{
addPreferencesFromResource(prefs);
}
@TargetApi(11)
protected void AddResourceApi11AndGreater()
{
getFragmentManager().beginTransaction().replace(android.R.id.content,
new PF()).commit();
}
@TargetApi(11)
public static class PF extends PreferenceFragment
{
@Override
public void onCreate(final Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
addPreferencesFromResource(MyPrefsActivity.prefs); //outer class
// private members seem to be visible for inner class, and
// making it static made things so much easier
}
}
}
सफलता के साथ दो एमुलेटर (2.2 और 4.2) में परीक्षण किया गया।
मेरा कोड इतना भद्दा क्यों दिखता है:
मैं एंड्रॉइड कोडिंग के लिए एक noob हूं, और मैं सबसे बड़ा जावा प्रशंसक नहीं हूं।
पदावनत चेतावनी से बचने और ग्रहण करने के लिए मजबूर करने के लिए मुझे एनोटेशन का सहारा लेना पड़ा, लेकिन ये केवल कक्षाओं या विधियों को प्रभावित करते हैं, इसलिए मुझे इसका लाभ उठाने के लिए कोड को दो नए तरीकों पर स्थानांतरित करना पड़ा।
मैं अपनी xml संसाधन आईडी को दो बार लिखना पसंद नहीं करूंगा, जब भी मैं एक नई वरीयता के लिए कक्षा की प्रतिलिपि बनाता हूं और पेस्ट करता हूं, इसलिए मैंने इस मूल्य को संग्रहीत करने के लिए एक नया चर बनाया।
मुझे उम्मीद है कि यह किसी और के लिए उपयोगी होगा।
पुनश्च: मेरी राय के लिए खेद है, लेकिन जब आप नए आते हैं और इस तरह के बाधाएं पाते हैं, तो आप इसे निराश होने में मदद नहीं कर सकते हैं!