Giới thiệu
Hướng dẫn này minh họa cách lưu trữ, đọc và xóa dữ liệu trong SharedPreferences trên Android sử dụng Kotlin. SharedPreferences phù hợp để lưu các cài đặt nhỏ, token, hoặc trạng thái ứng dụng.
Các bước thực hiện
Bước 1: Tạo dự án mới
Tạo project mới: File → New Project trong Android Studio.
Bước 2: Thiết kế giao diện (res/layout/activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="vertical"
android:padding="8dp"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="100dp"
android:layout_marginBottom="100dp"
android:textAlignment="center"
android:textColor="@android:color/holo_green_dark"
android:textSize="32sp"
android:textStyle="bold" />
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
android:textAlignment="center"
android:textColor="@android:color/background_dark"
android:textSize="20sp"
android:textStyle="bold" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Delete Shared Preference" />
<TextView
android:id="@+id/tvAfterChange"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:textAlignment="center"
android:textColor="@android:color/holo_red_light"
android:textSize="20sp"
android:textStyle="bold" />
</LinearLayout>
Bước 3: Thêm string resources (res/values/strings.xml)
<resources>
<string name="sharedPref_key_player">player_name</string>
<string name="sharedPref_key_country">country_name</string>
</resources>
Bước 4: Xử lý logic (src/MainActivity.kt)
import android.content.Context
import android.content.SharedPreferences
import android.os.Bundle
import android.widget.Button
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
private lateinit var textView: TextView
private lateinit var tvAfterDelete: TextView
private lateinit var sharedPreferences: SharedPreferences
private lateinit var editor: SharedPreferences.Editor
private lateinit var button: Button
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
textView = findViewById(R.id.textView)
tvAfterDelete = findViewById(R.id.tvAfterChange)
button = findViewById(R.id.button)
title = "KotlinApp"
// Khởi tạo SharedPreferences private cho app
sharedPreferences = getPreferences(Context.MODE_PRIVATE)
editor = sharedPreferences.edit()
// Lưu dữ liệu mẫu
editor.putString(getString(R.string.sharedPref_key_player), "Cristiano Ronaldo")
editor.putString(getString(R.string.sharedPref_key_country), "Portugal")
editor.apply()
// Đọc và hiển thị
val player = sharedPreferences.getString(getString(R.string.sharedPref_key_player), "")
val country = sharedPreferences.getString(getString(R.string.sharedPref_key_country), "")
textView.text = "SharedPreferences Values\nPlayer: $player\nCountry: $country"
// Xử lý xóa khi nhấn nút
button.setOnClickListener {
// Xóa một key cụ thể
editor.remove(getString(R.string.sharedPref_key_country))
editor.apply()
// Đọc lại sau khi xóa
val playerNow = sharedPreferences.getString(getString(R.string.sharedPref_key_player), "")
val countryNow = sharedPreferences.getString(getString(R.string.sharedPref_key_country), "")
tvAfterDelete.text = "After Removing Country\nPlayer: $playerNow\nCountry: $countryNow"
}
}
}
Bước 5: Cấu hình Manifest (androidManifest.xml)
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
package="app.com.q10">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Chạy ứng dụng
Kết nối thiết bị, nhấn Run. Ứng dụng sẽ hiển thị dữ liệu đã lưu. Khi nhấn nút "Delete Shared Preference", key "country_name" sẽ bị xóa và hiển thị kết quả sau xóa.
Các phương thức xóa quan trọng
editor.remove("key"): Xóa một key cụ thểeditor.clear(): Xóa tất cả dữ liệu trong SharedPreferences này- Luôn gọi
apply()(bất đồng bộ) hoặccommit()(đồng bộ) sau khi thay đổi
Lưu ý
Sử dụng getPreferences(MODE_PRIVATE) tạo file preferences riêng cho Activity. Nếu cần chia sẻ giữa nhiều Activity, dùng getSharedPreferences("name", MODE_PRIVATE).