حفظ و استرجاع البيانات Save Data
كثير من التطبيقات تحتاج إلي حفظ بعض
البيانات الخاصة بمستخدم التطبيق ( مثل كلمات المرور ، اللغة ، التفضيلات .. الخ )
و يمكن حفظ هذه البيانات و استراجاعها بسهولة
بطريقتين
1- باستخدام SharedPreference
2
– باستخدام قواعد البيانات
إذا كانت كمية البيانات المراد حفظها صغير
يفضل استخدام SharedPreferences أما إذا
كانت البيانات متعددة و متشابكة يفضل إنشاء قاعدة بيانات لها و ربطها بالتطبيق
سنقوم في هذا الدرس بإذن الله بشرح طريقة
حفظ البيانات باستخدام SharedPreferences
فكرة عمل SharedPreference هي :
عند الإعلان عن SharedPreference يقوم الاندرويد بإنشاء ملف تفضيلات خاص بتطبيقك
علي الجهاز
يتم انشاء الكائن SharedPreference من
خلال السطر التالي:
SharedPreferences getSharedPreferences (String Filename, int mode)
و يتكون هذا السطر من نوع الكائن هو SharedPreference و اسم الملف المخزن فيه و الـ Mode يوضح ما إذا كان ملف التفضيلات خاص بتطبيقنا فقط
أم متاح للباقي
و يأخذ قيم مثل :
-->
و يتم التعديل في ملف التفضيلات من خلال الإعلان عن كائن من نوع
SharedPreferences.Editor
و تخزين البيانات فية باستخدام الامر putString ,
putFloat , putBoolean بالشكل التالي
حيث key هو اسم السطر المراد تغييرة في ملف التفضيلات
كل سطر في ملف التفضيلات يجب ان يكون له اسم
( مفتاح Key ) لنتمكن من الوصول إليه بسهولة داخل ملف
التفضيلات
قم بإنشاء مشروع جديد باسم SaveDataProject
قم بتصميم الشاشة التالية في activity_main
فكرة التطبيق إدخال اسم المستخدم في الحقل المسمي editName و عند الضغط علي زر Save Name يقوم بحفظ هذا الاسم علي جهاز الجوال
و عند الضغظ علي زر Loadname يقوم باسترجاع الاسم الذي تم حفظة علي الجوال و
عرضه في TextView المسمي loadNametxt
كود الشاشة activity_main
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Name :"
/>
<EditText
android:id="@+id/editName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/loadNametxt"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Empty"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Save
Name"
android:onClick="doSave"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Load
Name"
android:onClick="doLoad"
/>
</LinearLayout>
قم بالذهاب الي ملف MainActivity.java
عدل الكود ليصبح بالشكل التالي
كود :
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void doSave(View view){
SharedPreferences myData = getSharedPreferences("myDataFile" , 0);
EditText editnametxt =(EditText)findViewById(R.id.editName);
SharedPreferences.Editor editor = myData.edit();
editor.putString("username",editnametxt.getText().toString());
editor.commit();
}
public void doLoad(View view){
SharedPreferences myData = getSharedPreferences("myDataFile" , 0);
TextView nametxt = (TextView)findViewById(R.id.loadNametxt);
nametxt.setText(myData.getString("username", "empty"));
}
في الكود السابق
قمنا بالإعلان عن كائن SharedPreferences باسم mydata
علي ملف خاص باسم Mydatafile
قمنا بالاعلان عن محرر التفضيلات باسم editor يجب أن يتم إغلاق المحرر بجملة
editor.comit();
تم انشاء مفتاح داخل ملف التفضيلات باسم username
يتم القراءة من ملف التفضيلات باستخدام السطر
getString و يقوم بقراءة
المفتاح username و اذا لم
يكن متوفرا المفتاح usename في ملف التفضيلات
سيتم عرض كلمة empty
قم بحفظ و تشغيل البرنامج علي المحاكي
انتهي
و بالله التوفيق
شكرا ، ربنا يبارك فيكم ويجزيكم كل خير ! من زمان وانا بدور ع شرح لهيك اشي ! بوركتم
ردحذفأخي كيف يمكن ربط قاعدة بيانات بالتطبيق وذلك عبر موقع app inventor
ردحذفأتمنى الشرح ولو بشكل مختصر
للعلم قاعدة البيانات صغير الحجم
احبك
ردحذف