الاثنين، 17 ديسمبر 2012

حفظ و استرجاع البيانات

حفظ و استرجاع البيانات Save Data
كثير من التطبيقات تحتاج إلي حفظ بعض البيانات الخاصة بمستخدم التطبيق ( مثل كلمات المرور ، اللغة ، التفضيلات  .. الخ )
و يمكن حفظ هذه البيانات و استراجاعها بسهولة بطريقتين 

              1- باستخدام SharedPreference

          2 – باستخدام قواعد البيانات

إذا كانت كمية البيانات المراد حفظها صغير يفضل استخدام SharedPreferences أما إذا كانت البيانات متعددة و متشابكة يفضل إنشاء قاعدة بيانات لها و ربطها بالتطبيق
سنقوم في هذا الدرس بإذن الله بشرح طريقة حفظ البيانات باستخدام SharedPreferences
فكرة عمل  SharedPreference   هي :

عند الإعلان عن SharedPreference   يقوم الاندرويد بإنشاء ملف تفضيلات خاص بتطبيقك علي الجهاز 

يتم انشاء الكائن  SharedPreference    من خلال السطر التالي:

 SharedPreferences getSharedPreferences (String Filename, int mode)


و يتكون هذا السطر من نوع الكائن هو SharedPreference     و اسم الملف المخزن فيه و الـ Mode  يوضح ما إذا كان ملف التفضيلات خاص بتطبيقنا فقط أم متاح للباقي

و يأخذ قيم مثل :
·         MODE_PRIVATE  è use 0 to indicate private
·         MODE_WORLD_READABLE
·         MODE_WORLD_WRITEABLE
·         MODE_MULTI_PROCESS

--> 


و يتم التعديل في ملف التفضيلات من خلال الإعلان عن كائن من نوع
 

SharedPreferences.Editor

و تخزين البيانات فية باستخدام الامر putString , putFloat , putBoolean   بالشكل التالي
putString(String key, String value)
حيث 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
قم بحفظ و تشغيل البرنامج علي المحاكي 


انتهي  و بالله التوفيق

هناك 3 تعليقات:

  1. شكرا ، ربنا يبارك فيكم ويجزيكم كل خير ! من زمان وانا بدور ع شرح لهيك اشي ! بوركتم

    ردحذف
  2. أخي كيف يمكن ربط قاعدة بيانات بالتطبيق وذلك عبر موقع app inventor

    أتمنى الشرح ولو بشكل مختصر

    للعلم قاعدة البيانات صغير الحجم

    ردحذف