آموزش به اشتراک گذاری منابع اندروید
آموزش به اشتراک گذاری منابع اندروید
اندروید روش های زیادی برای ذخیره ی داده ی یک برنامه ارائه می دهد. یکی از این راه ها 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 را زده و از برنامه خارج شوید. حالا آن را دوباره باز کنید. تمام متنی را که ذخیره کرده بودید در برنامه خواهید دید.
- نوشته شده توسط سعید نوشادی
- بازدید: 4859