اذهب إلى المحتوى
  • 0

خطأ في shared preferences عند طلب getString

Abdullha Mohammad

السؤال

Recommended Posts

  • 1

حاول استعمال الشيفرة التالية و تجريبها سوف تخزين اسم فقط، ثم تعرضه

SharedPreferences preferences1 = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = preferences1.edit();
editor.putString("Name","wael");
editor.apply();

ثم عرض إخطار بسيط:

SharedPreferences preferences2 = PreferenceManager.getDefaultSharedPreferences(this);
String name = preferences2.getString("Name", "");

Toast.makeText(getActivity(), "Hi! from " + name,
   Toast.LENGTH_LONG).show();

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 1
بتاريخ 2 ساعات قال Abdullha Mohammad:

طيب الحين انا ابيه يعرض لي آخر شاشه كنت فيه بعد ما أعيد فتح التطبيق ، اول شي احفظه اعمله editor.getString و ثمه اروح اسوي preferences.getString. احط كود الارتجاع في onPause و لا onStart  او اتبع طريقه الأول الي علمتني فيه اعمل class و اعمل فيه return لل Fragment 

تعريف الصنف غير ضروري، ما شرحته كان استخدام ملف Strings في المثال..

في الشيفرة التي ارفقتها في هذه الإجابة فقط استبدل الاسم بأي شيء تريده.

  • استخدم get في on start 
  • و put في حال حدوث تعديل لل Fragment التقط حدث التغيير و ضع الشيفرة
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 1
بتاريخ On 4/3/2022 at 20:15 قال Abdullha Mohammad:

سويت مثل ما قلت بس طلع لي activity فاضي عند التشغيل

في الدالة get مرر لها وسيط ثاني يعبر عن القيمة الافتراضية للمفتاح في حال تحميل أول Fragment لأن أول تشغيل ستكون قيمته null أي preferences.getString("Fragment", "Frag1");

بحيث إن لم يجد قيمة مقابل المفتاح يعيد مثلا Fragment 1 استبدل المفتاح و القيمة الافتراضية حسب تطبيقك

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ On 1‏/4‏/2022 at 10:50 قال Wael Aljamal:

حاول استعمال الشيفرة التالية و تجريبها سوف تخزين اسم فقط، ثم تعرضه


SharedPreferences preferences1 = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = preferences1.edit();
editor.putString("Name","wael");
editor.apply();

ثم عرض إخطار بسيط:


SharedPreferences preferences2 = PreferenceManager.getDefaultSharedPreferences(this);
String name = preferences2.getString("Name", "");

Toast.makeText(getActivity(), "Hi! from " + name,
   Toast.LENGTH_LONG).show();

 

طيب الحين انا ابيه يعرض لي آخر شاشه كنت فيه بعد ما أعيد فتح التطبيق ، اول شي احفظه اعمله editor.getString و ثمه اروح اسوي preferences.getString. احط كود الارتجاع في onPause و لا onStart  او اتبع طريقه الأول الي علمتني فيه اعمل class و اعمل فيه return لل Fragment 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 20 ساعات قال Wael Aljamal:

تعريف الصنف غير ضروري، ما شرحته كان استخدام ملف Strings في المثال..

في الشيفرة التي ارفقتها في هذه الإجابة فقط استبدل الاسم بأي شيء تريده.

  • استخدم get في on start 
  • و put في حال حدوث تعديل لل Fragment التقط حدث التغيير و ضع الشيفرة
  • سويت مثل ما قلت بس طلع لي activity فاضي عند التشغيل IMG_20220403_190129.thumb.jpg.4c6e51c3b2e1d57a0fb53c4ba836404d.jpg
  • هذا كود الشاشه الرئيسية IMG_20220403_172526.thumb.jpg.2cb17cd726c4da923fec9e86aed7f257.jpgIMG_20220403_172552.thumb.jpg.7f9b9976f329fa049d61b5e2a7aed384.jpg

وفي Fragment حطيت الأكواد هذا بس غيرت في قيمه الاسم والمفتاح  علي حسب الشاشه ا او ٢ او ٣ الخ... في كل Fragment  

IMG_20220403_171419.jpg

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ On 5‏/4‏/2022 at 02:22 قال Wael Aljamal:

في الدالة get مرر لها وسيط ثاني يعبر عن القيمة الافتراضية للمفتاح في حال تحميل أول Fragment لأن أول تشغيل ستكون قيمته null أي preferences.getString("Fragment", "Frag1");

بحيث إن لم يجد قيمة مقابل المفتاح يعيد مثلا Fragment 1 استبدل المفتاح و القيمة الافتراضية حسب تطبيقك

  • عرفت الإسم والمفتاح لوكل داخل Fragment 1 624f9a0746dc8_IMG__.thumb.jpg.fcf6e6eb8e6f844d2ee9a2edbdc7758c.jpg
  • وثم في Main activity داخل onStart استدعيته  بس نفس المشكله عند التشغيل يطلع شاشه ابيض IMG_20220406_192426.thumb.jpg.4e4c033ad0334c461f13d7f28d162cca.jpg
رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...