শেয়ার্ড প্রিফারেন্স এবং apply() মেথড পরিচিতি
শেয়ার্ড প্রিফারেন্স apply() মেথড জানার আগে, আমাদের জানতে হবে অ্যান্ড্রয়েডে শেয়ার্ড প্রিফারেন্স কী। শেয়ার্ড প্রিফারেন্স ব্যবহার করে আমরা কি-ভ্যালু পেয়ার (key-value pair) হিসেবে ভ্যালু সংরক্ষণ বা পুনরুদ্ধার করতে পারি। শেয়ার্ড প্রিফারেন্সে পাঁচটি ভিন্ন মেথড উপলব্ধ:
- edit() - শেয়ার্ড প্রিফারেন্স ভ্যালু এডিট করতে ব্যবহৃত হয়
- commit() - শেয়ার্ড প্রিফারেন্স ভ্যালু XML ফাইলে কমিট করতে ব্যবহৃত হয়
- apply() - এডিটর থেকে শেয়ার্ড প্রিফারেন্সে পরিবর্তনগুলো কমিট করতে ব্যবহৃত হয়
- remove(String key) - কি ব্যবহার করে শেয়ার্ড প্রিফারেন্স থেকে কি এবং ভ্যালু মুছে ফেলতে ব্যবহৃত হয়
- put() - শেয়ার্ড প্রিফারেন্স XML-এ কি এবং ভ্যালু রাখতে ব্যবহৃত হয়
শেয়ার্ড প্রিফারেন্সের নমুনা সিনট্যাক্স নিচে দেওয়া হলো:
final SharedPreferences sharedPreferences = getSharedPreferences("USER", MODE_PRIVATE);
উপরের সিনট্যাক্সে USER.xml নামে একটি শেয়ার্ড প্রিফারেন্স ফাইল তৈরি করা হয়েছে এবং এটি প্রাইভেট মোডে আছে অর্থাৎ অন্য কোনো অ্যাপ্লিকেশন এই শেয়ার্ড প্রিফারেন্স অ্যাক্সেস করতে পারবে না।
apply() মেথডের ব্যবহার
apply() ইন-মেমোরি স্টোরেজে অবিলম্বে লিখে, এবং পերսিস্টেন্ট স্টোরেজে অ্যাসিঙ্ক্রোনাসলি লিখতে শিডিউল করে।
নিচের উদাহরণটি দেখাবে কীভাবে অ্যান্ড্রয়েড শেয়ার্ড প্রিফারেন্সে apply() মেথড ব্যবহার করতে হয়।
স্টেপ ১: নতুন প্রজেক্ট তৈরি
Android Studio-তে File → New Project এ যান এবং প্রয়োজনীয় বিবরণ পূরণ করে একটি নতুন প্রজেক্ট তৈরি করুন।
স্টেপ ২: লেআউট XML কোড (res/layout/activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:app="https://schemas.android.com/apk/res-auto"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity"
tools:layout_editor_absoluteY="81dp">
<EditText
android:id="@+id/name"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_marginTop="8dp"
android:autofillHints=""
android:hint="নাম"
app:layout_constraintTop_toTopOf="parent"
tools:layout_editor_absoluteX="0dp" />
<EditText
android:id="@+id/address"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="84dp"
android:hint="ফোন নম্বর"
android:importantForAutofill="no"
android:inputType=""
app:layout_constraintTop_toTopOf="@id/name"
tools:layout_editor_absoluteX="16dp"
tools:targetApi="o" />
<Button
android:id="@+id/button"
android:layout_width="108dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:layout_marginTop="120dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:gravity="center_horizontal"
android:text="সংরক্ষণ"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.503"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/address" />
<Button
android:id="@+id/read"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:layout_marginTop="88dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:gravity="center_horizontal"
android:text="পড়ুন"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/button" />
<TextView
android:id="@+id/result"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:layout_marginTop="184dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:text="ফলাফল"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/button" />
</android.support.constraint.ConstraintLayout>
উপরের XML-এ নাম এবং ঠিকানার জন্য দুটি EditText আছে। ব্যবহারকারী Save বাটনে ক্লিক করলে ভ্যালুগুলো শেয়ার্ড প্রিফারেন্সে সংরক্ষিত হবে এবং Read বাটনে ক্লিক করলে শেয়ার্ড প্রিফারেন্স থেকে ভ্যালুগুলো পড়বে।
স্টেপ ৩: MainActivity.java কোড
package com.example.andy.myapplication;
import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final SharedPreferences sharedPreferences = getSharedPreferences("USER", MODE_PRIVATE);
final EditText name = findViewById(R.id.name);
final EditText address = findViewById(R.id.address);
final TextView result = findViewById(R.id.result);
Button save = findViewById(R.id.button);
Button read = findViewById(R.id.read);
read.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
result.setText("নাম: " + sharedPreferences.getString("Name", "নাম নেই") + " ঠিকানা: " + sharedPreferences.getString("Address", "ঠিকানা নেই"));
}
});
save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (name.getText().toString().isEmpty() && address.getText().toString().isEmpty()) {
Toast.makeText(MainActivity.this, "সকল ডেটা লিখুন", Toast.LENGTH_LONG).show();
} else {
String nameData = name.getText().toString().trim();
String addressData = address.getText().toString().trim();
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("Name", nameData);
editor.putString("Address", addressData);
editor.apply();
}
}
});
}
}
স্টেপ ৪: Manifest.xml পরিবর্তন প্রয়োজন নেই
আপনার অ্যান্ড্রয়েড মোবাইল ডিভাইস কম্পিউটারের সাথে সংযুক্ত আছে ধরে নেওয়া হয়েছে। Android Studio-তে প্রজেক্টের এক্টিভিটি ফাইল খুলে টুলবারের Run আইকনে ক্লিক করুন। আপনার মোবাইল ডিভাইস সিলেক্ট করুন এবং ডিভাইস চেক করুন - ডিফল্ট স্ক্রিন প্রদর্শিত হবে।

উপরের উদাহরণে আমরা নাম এবং ঠিকানা যোগ করেছি এবং Save বাটনে ক্লিক করেছি।

উপরের উদাহরণে, আমরা Read বাটনে ক্লিক করেছি। এটি টেক্সট ভিউ-তে টেক্সট অ্যাপেন্ড করবে।