Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Android

Cách xóa dữ liệu SharedPreferences trong Android App bằng Kotlin

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ặc commit() (đồ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).