Android ==> التفضيل؟
-
28-09-2019 - |
سؤال
تعطل تطبيقي مع استثناء مؤشر فارغ على الكود أدناه. لدي ملف تفضيلات XML ضمن Res/XML/Defaults.xml أي فكرة عن سبب تعطله؟
public class Preference extends Activity {
public Preference()
{
}
public String getPreference(String key)
{
//it still crashes here
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this.getApplicationContext());
String result = settings.getString(key, null);
return result;
}
}
المحلول
ملفات التفضيل هي ليس Storead في المشروع /res/xml/defaults.xml
يتم تخزينها على الجهاز في مجلد التطبيق الخاص بك شيء مثل
/data/data/com.your.pkg/default.prefs
حاول عدم تحديد اسم الملف ، حيث سيكون لديك بعض المشكلات في ملفات التفضيل ، مثل هذا OP هنا
SharedPreferences preferences = PreferenceManager
.getDefaultSharedPreferences(context);
ثم على الأرجح سيتعين عليك الاستعلام
preferences.getString('weightPref', null);
نصائح أخرى
إليك رمز عينة يوضح كيفية حفظ وتفضيلات التفضيلات. أنا هنا أقوم بحفظ اسم المستخدم وكلمة المرور في المشاركين.
SharedPreferences uPreferences = getSharedPreferences("CurrentUser", MODE_PRIVATE);
SharedPreferences.Editor editor; = uPreferences.edit(); //Instantiating editor object
protected void storeSharedPrefs(String username, String password) {
/*
* Storing in Shared Preferences
*/
editor.putString("username", username);
editor.putString("password", password);
editor.commit(); //Commiting changes
}
استرداد اسم المستخدم وكلمة المرور في نشاط آخر من المشاركين.
private SharedPreferences mSP;
mSP = getSharedPreferences("CurrentUser", MODE_PRIVATE);
String username = mSP.getString("username", null);
String password = mSP.getString("password", null);
أتمنى أن يساعد ..
تحديد قيمة في التفضيلات المشتركة:
Editor prefs = getSharedPreferences("Application_name", MODE_PRIVATE).edit();
prefs.putString("key", accountKey);
prefs.commit();
الحصول على القيمة من نشاط آخر:
String accountKey =
this.getSharedPreferences("Application_name", MODE_PRIVATE).
getString("key", null);
سيكون من الرائع أن تصل إلى المتغير باستخدام بعض المعالج المحدد مسبقًا ، مثل getString(R.string._key)
, ، بدلاً من السلسلة المتشددين "key"
.
يجب أن تمتد تفضيلاتك تفضيل النشاط. ثم تحتاج إلى إنشاء ملف XML مورد للتفضيلات ، والرجوع إلى ذلك في تفضيلك مثل ذلك:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
etc.
}
يجب أن يكون للتفضيلات XML تفضيلات CREEN كعنصر من المستوى الأعلى ، ويمكنك الاستفادة من جميع طرق عرض التفضيلات المختلفة التي توفرها Android لك لإعداد التفضيلات. ستكون هذه الطريقة الأكثر شيوعًا والأنيقة للقيام بذلك.