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)
}
}