سبد (0)

آموزش به اشتراک گذاری منابع اندروید

آموزش به اشتراک گذاری منابع اندروید

اندروید روش های زیادی برای ذخیره ی داده ی یک برنامه ارائه می دهد. یکی از این راه ها Shared Preferences می باشد. Shared Preferences به شما اجازه می دهد تا داده را به شکل جفت کلید / مقدار (key/ value)  ذخیره و بازیابی کنید.

برای استفاده از این برنامه باید متدی از getSharedPreferences() را فرا بخوانید که یک نمونه از SharedPreference را با اشاره به فایلی که شامل مقادیر preferences می شود، بر می گرداند.

 

SharedPreferences sharedpreferences = getSharedPreferences(MyPREFERENCES,Context.MODE_PRIVATE);

اولین پارامتر key و دومین پارامتر MODE می باشد. علاوه بر اینها متد های دیگری هم وجود دارند که در جدول زیر ارائه شده اند.

  • MODE_APPEND

    Preference های جدید را با preference  های تقریبا موجود یکی می کند.

  • MODE_ENABLE_WRITE_AHEAD_LOGGING

    وقتی پایگاه داده ی open flag  تنظیم می شود، به طور پیش فرض نوشتن و ورود را فعال می کند.

  • MODE_MULTI_PROCESS

    این روش تعدیل preferenceها را چک خواهد کرد، حتی اگر نمونه ی sharedpreference تقریبا بارگذاری شده باشد.

  • MODE_PRIVATE

    با تنظیم این متد فایل تنها با استفاده از فراخوانی برنامه در دسترس خواهد بود.

  • MODE_WORLD_READABLE

    این متد به برنامه های دیگر اجازه می دهد تا preference را بخوانند.

  • MODE_WORLD_WRITEABLE

    این متد به دیگر برنامه ها اجازه می دهد تا دیگر برنامه ها را بنویسند.

شما می توانید با استفاده از کلاس SharedPreferences.Editor چیزی روی SharedPreferences ذخیره کنید. روش ویرایش را از نمونه ی SharedPreference فرابخوانید و آن را در یک آبجکت ویرایشگر دریافت خواهید کرد. ترکیب آن مانند زیر می باشد.

 

Editor editor = sharedpreferences.edit();
editor.putString("key", "value");
editor.commit();

علاوه بر متد putString متدهای دیگری در کلاس ویرایشگر هستند که امکان اجرای داده را در داخل SharedPreference فراهم می کنند. در جدول زیر این متد ها را مشاهده می کنید.

  • clear()

    تمام مقادیر را از ویرایشگر حذف خواهد کرد.

  • remove(String key)

    مقداری را که کلید آن به عنوان یک پارامتر منتقل شده باشد، حذف می کند.

  • putLong(String key, long value)

    یک مقدار بلند را در یک ویرایشگر preference ذخیره خواهد کرد.

  • putInt(String key, int value)

    یک مقدار صحیح را در یک ویرایشگر preference ذخیره خواهد کرد.

  • putFloat(String key, float value)

    یک مقدار معلق را در یک ویرایشگر preference ذخیره خواهد کرد.

مثال

در اینجا مثالی را می بینید که استفاده از Shared Preferences را توضیح می دهد. این مثال صفحه ای را با فیلدهای متن نمایش می دهد که مقدار آن زمانی که برنامه بسته می شود، ذخیره شده و در هنگام باز کردن دوباره بازمی گردد.

برای انجام این مثال لازم است آن را روی یک دستگاه حقیقی اجرا کنید، البته پس از توسعه ی برنامه روی آن دستگاه طبق مراحل زیر

  • برای ایجاد یک برنامه ی اندروید از Eclipse IDE استفاده خواهید کرد و آن را با عنوان  SharedPreferences تحت بسته ی com.PRG.sharedpreferences نام گذاری کنید. زمان ایجاد این برنامه مطمئن شوید که Target  SDKو Compile With در آخرین ورژن  Android SDK هستند تا از سطوح بالاتر API استفاده کنید.

  • فایل src/MainActivity.java را برای افزودن کد پیشرفت و نمایش دیالوگ  دایره ی پیشرفت تغییر دهید.

  • فایل res/layout/activity_main.xml را برای افزودن کد XML مربوطه تغییر دهید.

  • برنامه را اجرا کرده و یک دستگاه اجرایی اندروید انتخاب کنید، برنامه را روی آن نصب کرده و نتایج را بررسی کنید.

در ادامه محتوای فایل تغییریافته یMainActivity را مشاهده می کنید.

 

package com.PRG.SharedPreferences;

import android.content.Context;
import android.content.SharedPreferences;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends ActionBarActivity {
   EditText ed1,ed2,ed3;
   Button b1;
   public static final String MyPREFERENCES = "MyPrefs" ;
   public static final String Name = "nameKey";
   public static final String Phone = "phoneKey";
   public static final String Email = "emailKey";
   SharedPreferences sharedpreferences;
   
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      
      ed1=(EditText)findViewById(R.id.editText);
      ed2=(EditText)findViewById(R.id.editText2);
      ed3=(EditText)findViewById(R.id.editText3);
      
      b1=(Button)findViewById(R.id.button);
      sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
      
      b1.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            String n  = ed1.getText().toString();
            String ph  = ed2.getText().toString();
            String e  = ed3.getText().toString();
            
            SharedPreferences.Editor editor = sharedpreferences.edit();
            
            editor.putString(Name, n);
            editor.putString(Phone, ph);
            editor.putString(Email, e);
            editor.commit();
            Toast.makeText(MainActivity.this,"Thanks",Toast.LENGTH_LONG).show();
         }
      });
   }
   
   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
      // Inflate the menu; this adds items to the action bar if it is present.
      getMenuInflater().inflate(R.menu.menu_main, menu);
      return true;
   }
   @Override
   public boolean onOptionsItemSelected(MenuItem item) {
      // Handle action bar item clicks here. The action bar will
      // automatically handle clicks on the Home/Up button, so long
      // as you specify a parent activity in AndroidManifest.xml.
      
      int id = item.getItemId();
      
      //noinspection SimplifiableIfStatement
      if (id == R.id.action_settings) {
         return true;
      }
      return super.onOptionsItemSelected(item);
   }
}

در زیر محتوای فایل فعالیت اصلی تغییر یافته res/layout/activiy_main.xmlرا می بینید.

 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
   android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
   
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Shared Preference "
      android:id="@+id/textView"
      android:layout_alignParentTop="true"
      android:layout_centerHorizontal="true"
      android:textSize="35dp" />
      
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Tutorials Point"
      android:id="@+id/textView2"
      android:layout_below="@+id/textView"
      android:layout_centerHorizontal="true"
      android:textSize="35dp"
      android:textColor="#ff16ff01" />
      
   <EditText
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/editText"
      android:layout_below="@+id/textView2"
      android:layout_marginTop="67dp"
      android:hint="Name"
      android:layout_alignParentRight="true"
      android:layout_alignParentEnd="true"
      android:layout_alignParentLeft="true"
      android:layout_alignParentStart="true" />
      
   <EditText
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/editText2"
      android:layout_below="@+id/editText"
      android:layout_alignParentLeft="true"
      android:layout_alignParentStart="true"
      android:layout_alignParentRight="true"
      android:layout_alignParentEnd="true"
      android:hint="Pass" />
      
   <EditText
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/editText3"
      android:layout_below="@+id/editText2"
      android:layout_alignParentLeft="true"
      android:layout_alignParentStart="true"
      android:layout_alignParentRight="true"
      android:layout_alignParentEnd="true"
      android:hint="Email" />
      
   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Save"
      android:id="@+id/button"
      android:layout_below="@+id/editText3"
      android:layout_centerHorizontal="true"
      android:layout_marginTop="50dp" />
      
</RelativeLayout>

در زیر محتوای فایل فعالیت اصلی تغییر یافته strings.xml را می بینید.

 

<resources>
   <string name="app_name">My Application</string>
   <string name="hello_world">Hello world!</string>
   <string name="action_settings">Settings</string>
</resources>

در زیر محتوای فایل فعالیت اصلی تغییر یافته AndroidManifest.xml را می بینید.

 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.PRG.SharedPreferences" >
   
   <application
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" >
      
      <activity
         android:name=".MainActivity"
         android:label="@string/app_name" >
         
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
         
      </activity>
      
   </application>
</manifest>

 اجازه بدهید برنامه ی  SharedPreferences شما را اجرا کنیم. فرض می کنیم که دستگاه موبایل اندروید خود را به کامپیوتر متصل کرده اید. برای اجرای برنامه از Eclipse، یکی ازفایل های فعالیت پروژه را باز کرده و روی آیکن Run  از تولبار کلیک کنید.

اکنون موبایل خود را به عنوان یک گزینه انتخاب کرده و سپس آن را بررسی کنید که صفحه ی زیر را نمایش خواهد داد.

اکنون در فیلد ,متنی وارد کنید، مثلا من چند اسم و اطلاعات تصادفی نوشتم، پس از آن روی save کلیک کنید.

وقتی روی دکمه ی save فشار می دهید، اطلاعات در shared preferences ذخیره شده. پس از آن دکمه ی back را زده و از برنامه خارج شوید. حالا آن را دوباره باز کنید. تمام متنی را که ذخیره کرده بودید در برنامه خواهید دید.

تمامی محصولات و خدمات این وبسایت، حسب مورد دارای مجوزهای لازم از مراجع مربوطه می‌باشند و فعالیت‌های این سایت تابع قوانین و مقررات جمهوری اسلامی ایران است.
logo-samandehi مجوز نشر دیجیتال از وزرات فرهنگ و ارشاد اسلامی پرداخت آنلاین -  بانک ملت معرفی بیاموز در شبکه سه