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

السؤال

نشر

السلام عليكم ورحمة الله وبركاته 

تحيه طيبه للجميع 

لدي استفسار انا عامل SharedPreferences لحفظ البيانات من edittext  لما اخرج من الاكتفتي او انتقل اكتفتي ثاني لا يتم حذف البيانات الكود شغال ميه ميه المشكلة فقط الكود حاليا يعمل لدى edittext1 مثلا ولكن  انا لدي اكثر من حقل edittext3 ,edittext1,edittext1

 

 final SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
        editText.setText(pref.getString(LAST_TEXT, ""));
        editText1.setText(pref.getString(LAST_TEXT2, ""));
        editText2.setText(pref.getString(LAST_TEXT3, ""));
        editText3.setText(pref.getString(LAST_TEXT4, ""));
        editText4.setText(pref.getString(LAST_TEXT5, ""));
        editText5.setText(pref.getString(LAST_TEXT6, ""));
   
        editText.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

            }

            @Override
            public void afterTextChanged(Editable s) {

                pref.edit().putString(LAST_TEXT, s.toString()).commit();
                pref.edit().putString(LAST_TEXT2, s.toString()).commit();
                pref.edit().putString(LAST_TEXT3, s.toString()).commit();
                pref.edit().putString(LAST_TEXT4, s.toString()).commit();
                pref.edit().putString(LAST_TEXT5, s.toString()).commit();
                pref.edit().putString(LAST_TEXT6, s.toString()).commit();
                pref.edit().putString(LAST_TEXT7, s.toString()).commit();
            

            }



        });

 

 لو عملته بشكل التالي رح يعمل في اول حقل فقط 

كيف ممكن اضيف جميع الحقول ؟ اكثر طريقة مختصره ممكن للكود لو تكرمتو الي معه فكره احتاج

Recommended Posts

  • 1
نشر

مرحبا مروان
أنا لم أفهم جيداً ما الذي تريد عمله لكن حالياً أنت قمت بإضافة listener للحقل الأول فقط فإذا تغير هذا الحقل يتم حفظ القيمة الجديدة بأكثر من key و عند عملية الجلب ستكون القيمة نفسها في كل الحقول 
إذا كنت تريد حفظ البيانات كلها لكل الحقول يجب إضافة أكثر من listener أي لكل حقل أو يمكنك إضافة زر لحفظ كل البيانات يعني عند الضغط على الزر تجلب بيانات الحقول و تقوم بحفظها في ال SharedPreferences وإضافة زر آخر لجلب البيانات ووضعها في الحقول وسيتم جلب البيانات المخزنة في SharedPreferences
يمكنك الإستعانة بهذا الفيديو الذي يشرح عن كيفية خزن و جلب البيانات في الهاتف بإستعمال SharedPreferences

إذا لم يكن هذا ما تريد رجاءً إشرح جيداً و سنُساعدك
بالتوفيق

  • 0
نشر (معدل)

وعليكم السلام ورحمه الله وبركاته، 

أضن SharedPreferences يمكن استعماله لخفض بيانات لاستعمال في اي جزء من البرنامج. في طرق غير لتحويل المعلومات من شاشة لشاشة.

اذا تريد تحويل معلومات في String من Activity الى Activity استعمل putExtra.

مثال في اكتيفيتي الاولى: : 

String text1 = editText.getText().toString();
Intent intent = new Intent(MainActivity.this, Activity2.class);
intent.putExtra("text1", text1);
startActivity(intent);

بعدين في اكتيفيتي الثانية:

  editText.setText(getIntent().getStringExtra("text1"));

 

و اذا تريد تحويل معلومات في String من  Fragment الى Fragment استعمل Bundle.

مثال في فراجمنت الاولى:

// بعد انشاء و ابداء الفراجمنت
String text1 = editText.getText().toString();
Bundle bundle = new Bundle();
bundle.putString("text1", text1);
fragmentName.setArguments(bundle);

بعدين في فراجمنت الثانية:

Bundle bundle = getArguments();
if(bundle! = null){
	editText.setText(bundle.getString("text1"));
}

 

تم التعديل في بواسطة عبدالرشيد احمد
اضفت السلام.
  • 0
نشر (معدل)

هلا بيك عزيزي @عبود سمير

( يجب إضافة أكثر من listener ) هذا المشكلة لو عملت كذا بيكون الكود طويل جدا في حالة لدي كمية كبيره من حقول الادخال 

ولكني ساجرب طريقة الفيديو اعتقد اني فهمت طريقة ويمكن الاستعانه بها 

@عبدالرشيد احمد

هلا بيك اخوي 

لا اخي لا احتاج الى نقل البيانات الى اكتفتي مختلف انا فقط احاول حفظ حالة الاكتفتي لو فتحت اكتفتي ثاني 

تم التعديل في بواسطة مروان مروان3

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...