سؤال

أحاول حفظ تاريخ تحليل الملف ، بحيث يفتح التطبيق في المرة القادمة ، يمكن التحقق من التاريخ مقابل آخر تاريخ تحليل.

أنا أستخدم التفضيل المشترك لحفظ البيانات واستردادها ، ولكن الحصول على خطأ. هنا هو الرمز:

SharedPreferences settings =  getPreferences(0);
String today = new Date(System.currentTimeMillis()).toString();
SharedPreferences.Editor edit = settings.edit();
System.out.println("******** Today : " + today);
edit.putString("lastdate", today);

String fetch = settings.getString("lastdate", "0");
System.out.println("******** Fetch : " + fetch);
txtTest.setText(fetch);

لكنني أخطأ في خطأ مؤشر فارغ ، هل أفتقد شيئًا؟

هل كانت مفيدة؟

المحلول

قد توفر العديد من التطبيقات طريقة لالتقاط تفضيلات المستخدم على إعدادات تطبيق معين أو نشاط. لدعم هذا ، يوفر Android مجموعة بسيطة من واجهات برمجة التطبيقات.

التفضيلات عادة ما تكون أزواج القيمة. يمكن تخزينها على أنها "تفضيلات مشتركة" عبر أنشطة مختلفة في التطبيق (ملاحظة لا يمكن مشاركتها حاليًا عبر العمليات). أو يمكن أن يكون شيئًا يحتاج إلى تخزينه الخاص بالنشاط.

  1. التفضيلات المشتركة: يمكن استخدام التفضيلات المشتركة من قبل جميع المكونات (الأنشطة والخدمات وما إلى ذلك) من التطبيقات.

  2. تفضيلات التعامل مع النشاط: لا يمكن استخدام هذه التفضيلات إلا في النشاط ولا يمكن استخدامها بواسطة مكونات أخرى للتطبيق.

تفضيلات المشتركة:

تتم إدارة التفضيلات المشتركة بمساعدة getSharedPreferences طريقة Context صف دراسي. يتم تخزين التفضيلات في ملف افتراضي (1) أو يمكنك تحديد اسم ملف (2) لاستخدامه للإشارة إلى التفضيلات.

(1) إليك كيفية الحصول على المثيل عند تحديد اسم الملف

public static final String PREF_FILE_NAME = "PrefFile";
   SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);

MODE_PRIVATE هو وضع التشغيل للتفضيلات. إنه الوضع الافتراضي ويعني الوصول إلى الملف الذي تم إنشاؤه بواسطة تطبيق الاتصال فقط. اثنين آخرين مدعومان MODE_WORLD_READABLE و MODE_WORLD_WRITEABLE. في MODE_WORLD_READABLE يمكن للتطبيق الآخر قراءة الملف الذي تم إنشاؤه ولكن لا يمكن تعديله. في حالة MODE_WORLD_WRITEABLE التطبيقات الأخرى لديها أيضا أذونات الكتابة للملف الذي تم إنشاؤه.

(2) الطريقة الموصى بها هو استخدام الوضع الافتراضي ، دون تحديد اسم الملف

SharedPreferences preferences = PreferencesManager.getDefaultSharedPreferences(context);

أخيرًا ، بمجرد أن يكون لديك مثيل التفضيلات ، إليك كيف يمكنك استرداد القيم المخزنة من التفضيلات:

 int storedPreference = preferences.getInt("storedInt", 0);

إلى قيم المتجر في ملف التفضيل SharedPreference.Editor يجب استخدام الكائن. Editor هي الواجهة المتداخلة لـ SharedPreference صف دراسي.

SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();

المحرر أيضا يدعم طرق مثل remove() و clear() لحذف قيمة التفضيل من الملف.

تفضيلات النشاط:

يمكن استخدام التفضيلات المشتركة بواسطة مكونات التطبيق الأخرى. ولكن إذا لم تكن بحاجة إلى مشاركة التفضيلات مع المكونات الأخرى وتريد أن يكون لها أنشطة تفضيلات خاصة. يمكنك القيام بذلك بمساعدة getPreferences() طريقة النشاط. ال getPreference الطريقة تستخدم getSharedPreferences() الطريقة مع اسم فئة النشاط لاسم ملف التفضيل.

فيما يلي الرمز للحصول على التفضيلات

SharedPreferences preferences = getPreferences(MODE_PRIVATE);
int storedPreference = preferences.getInt("storedInt", 0);

الرمز لتخزين القيم هو نفسه كما في حالة التفضيلات المشتركة.

SharedPreferences preferences = getPreference(MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();

يمكنك أيضًا استخدام طرق أخرى مثل تخزين حالة النشاط في قاعدة البيانات. لاحظ أن Android يحتوي أيضًا على حزمة تسمى android.preference. تحدد الحزمة الفئات لتنفيذ UIPENCES Application UI.

لرؤية بعض الأمثلة الأخرى تحقق من Android مخزن البيانات بعد على موقع المطورين.

نصائح أخرى

تحتاج إلى تغيير كيفية الحصول على الكائن

SharedPreferences settings = PreferenceManager
                    .getDefaultSharedPreferences(context);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top