استخدم ملف او نموذج sharedPreferences لحفظ بيانات المستخدم من صفحة login بمعنى اول من يدخل التطبيق المستخدم اخذ البيانات التي احتاجها واحفظها من اجل استخدامها في التطبيق مثل بيانات العضو والحظر وباقي الاجراءات والامور ناجح تمام ولكن لدي مشكلة بسيطه
انا اقوم بستدعاء sharedPreferences الذي هي بداخل كلاس منفصل الى الصفحة التي احتاجه عن طريق الكود التالي :
لو قمت بستدعاء ملف sharedPreferences في صحفة مختلفة ونقول صفحة الملف الشخصي ورغبت بتعديل بيانات العضو ولكن ليس كلها مثلا فقط الاسم طبعا الان ممكن التعديل ولكن لن يتغير الاسم الا اذا قام المستخدم بتسجيل الخروج وانتهت جلست sharedPreferences ورجع يدخل بيكون قد تحدث اسمه في التطبيق ولو حاولت اني اضيف السطر التالي الى volley الخاصة بتحديث الملف :
sessionManager.createSession(name);
سيظهر لدي الخطاء التالي:
'createSession(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String)' in 'com.example.myapplication.SessionManager' cannot be applied to '(java.lang.String)'
وهو يطالبني بحفظ جميع الحقول مثل ما حدث في صحفة تسجيل الدخول ولكن انا احتياجي لتحديث الاسم فقط الان
فكيف استطيع فعل ذلك ؟وتحديث الحقل المطلوب فقط بدون ان تتاثر باقي الحقول المحفوظة في sharedPreferences
مرفق لكم نموذج من ملف كلاس sharedPreferences كالتالي :
publicclassSessionManager{SharedPreferencesPreferences;publicSharedPreferences.Editor editor;publicContext context;int PRIVATE_MODE =0;privatestatic final String PREF_NAME ="LOGIN";privatestatic final String LOGIN ="IS_LOGIN";publicstatic final String NAME ="NAME";publicSessionManager(Context context){this.context = context;
sharedPreferences = context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
editor = sharedPreferences.edit();}publicvoid createSession(String name,String phone,StringUsersdId){
editor.putBoolean(LOGIN,true);
editor.putString(NAME, name);
editor.putString(ID,UsersdId);
editor.apply();}publicHashMap<String,String> getUserDetail(){HashMap<String,String> user =newHashMap<>();
user.put(NAME, sharedPreferences.getString(NAME, null));
user.put(ID, sharedPreferences.getString(ID, null));return user;}}
السؤال
Flutter Dev
السلام عليكم ورحمة الله وبركاته
استخدم ملف او نموذج sharedPreferences لحفظ بيانات المستخدم من صفحة login بمعنى اول من يدخل التطبيق المستخدم اخذ البيانات التي احتاجها واحفظها من اجل استخدامها في التطبيق مثل بيانات العضو والحظر وباقي الاجراءات والامور ناجح تمام ولكن لدي مشكلة بسيطه
انا اقوم بستدعاء sharedPreferences الذي هي بداخل كلاس منفصل الى الصفحة التي احتاجه عن طريق الكود التالي :
واقوم بحفظ البيانات اليها من خلال volley على سبيل المثال اذا كانت في صفحة تسجيل الدخول حتى تاخذ البيانات بشكل التالي :
sessionManager.createSession(name,password,cuntry,photo);
الان قمت باخذ 4 حقول الى ملف sharedPreferences
الى كذا الامر 100%100 الان الى المشكلة
لو قمت بستدعاء ملف sharedPreferences في صحفة مختلفة ونقول صفحة الملف الشخصي ورغبت بتعديل بيانات العضو ولكن ليس كلها مثلا فقط الاسم طبعا الان ممكن التعديل ولكن لن يتغير الاسم الا اذا قام المستخدم بتسجيل الخروج وانتهت جلست sharedPreferences ورجع يدخل بيكون قد تحدث اسمه في التطبيق ولو حاولت اني اضيف السطر التالي الى volley الخاصة بتحديث الملف :
sessionManager.createSession(name);
سيظهر لدي الخطاء التالي:
وهو يطالبني بحفظ جميع الحقول مثل ما حدث في صحفة تسجيل الدخول ولكن انا احتياجي لتحديث الاسم فقط الان
فكيف استطيع فعل ذلك ؟وتحديث الحقل المطلوب فقط بدون ان تتاثر باقي الحقول المحفوظة في sharedPreferences
مرفق لكم نموذج من ملف كلاس sharedPreferences كالتالي :
كيف سيتم كتابة هذا السطر :
sessionManager.createSession(name);
ام انا في حاجه الى استبداله بسطر مختلف ؟
تم التعديل في بواسطة مروان مروان34 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.