Tampilkan Layar Preferensi di Android

Pengaturan memungkinkan user untuk mengubah perilaku dan fungsionalitas aplikasi. Layar Preferensi dapat diintegrasikan ke dalam aplikasi menggunakan Pustaka Preferensi AndroidX. Ini mengelola preferensi yang ditampilkan di layar dan berinteraksi dengan penyimpanan.

Dalam file modul build.gradlekami menambahkan androidx.preference:preferencedependensi.

app/build.gradle

dependencies {

// Other dependencies

// …

implementation ‘androidx.preference:preference:1.1.1’

}

Hirarki preferensi dapat ditentukan dalam file sumber daya XML.

app/src/main/res/xml/app_preferences.xml

<?xml version=”1.0″ encoding=”utf-8″?>

<PreferenceScreen xmlns:android=”http://schemas.android.com/apk/res/android”

xmlns:app=”http://schemas.android.com/apk/res-auto”>

 

<EditTextPreference

android:key=”username”

android:title=”Username”

android:summary=”Click to show a dialog”

app:iconSpaceReserved=”false” />

</PreferenceScreen>

Kami membuat kelas baru yang meluas Preference FragmentCompat. Sumber daya XML yang berisi preferensi disediakan dengan menggunakan addPreferences FromResource() metode.

app/src/main/java/com/example/app/SettingsFragment.kt

package com.example.app

 

import android.os.Bundle

import androidx.preference.PreferenceFragmentCompat

 

class SettingsFragment : PreferenceFragmentCompat()

{

override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?)

{

addPreferencesFromResource(R.xml.app_preferences)

}

}

Kami membuat aktivitas baru yang menginisialisasi fragmen dan menampilkan preferensi.

app/src/main/java/com/example/app/SettingsActivity.kt

package com.example.app

 

import androidx.appcompat.app.AppCompatActivity

import android.os.Bundle

 

class SettingsActivity : AppCompatActivity()

{

override fun onCreate(savedInstanceState: Bundle?)

{

super.onCreate(savedInstanceState)

 

supportFragmentManager.beginTransaction()

.replace(android.R.id.content, SettingsFragment())

.commit()

}

}

Dalam file XML tata letak kami menambahkan Buttonyang akan digunakan untuk membuka aktivitas yang menampilkan preferensi.

app/src/main/res/layout/activity_main.xml

<?xml version=”1.0″ encoding=”utf-8″?>

<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”

tools:context=”.MainActivity”>

 

<Button

android:id=”@+id/myButton”

android:layout_width=”wrap_content”

android:layout_height=”wrap_content”

android:layout_centerInParent=”true”

android:text=”Open” />

 

</RelativeLayout>

Semua preferensi disimpan sebagai pasangan nilai kunci di default SharedPreferences.

app/src/main/java/com/example/app/MainActivity.kt

package com.example.app

 

import android.content.Intent

import androidx.appcompat.app.AppCompatActivity

import android.os.Bundle

import android.util.Log

import androidx.preference.PreferenceManager

import kotlinx.android.synthetic.main.activity_main.*

 

class MainActivity : AppCompatActivity()

{

override fun onCreate(savedInstanceState: Bundle?)

{

super.onCreate(savedInstanceState)

setContentView(R.layout.activity_main)

 

myButton.setOnClickListener { showSettings() }

 

val sharedPref = PreferenceManager.getDefaultSharedPreferences(this)

val username = sharedPref.getString(“username”, “”)

Log.d(“MY_APP”, username!!)

}

 

private fun showSettings()

{

val intent = Intent(this, SettingsActivity::class.java)

startActivity(intent)

}

}

 

Related Posts