SlideShare a Scribd company logo
1 of 111
PEMROGRAMAN
BERGERAK
Shared Preferences and Settings
(Preferensi dan Pengaturan Bersama)
Riad Sahara, S.SI., M.T.
Universitas Siber Asia Program Studi:
PJJ Informatika S1
Modul Ke:
13
2
9.0 Penyimpanan Data (Data Storage)
3
Isi
• Sistem File Android
• Penyimpanan Internal
• Penyimpanan Eksternal
• SQLite Database
• Opsi Penyimpanan Lainnya
4
Opsi Penyimpanan
(Storage Options)
5
Menyimpan data (Storing data)
● Shared Preferences—Data primitif privat dalam pasangan nilai kunci
● Internal Storage—Data pribadi pada memori perangkat
● External Storage—Data publik di perangkat atau penyimpanan eksternal
● SQLite Databases—Data terstruktur dalam database pribadi
● Content Providers—Simpan secara pribadi dan sediakan untuk umum
6
Storing data beyond Android
●Network Connection—Di web dengan server Anda sendiri
●Cloud Backup—Mencadangkan aplikasi dan data pengguna di cloud
●Firebase Realtime Database—Simpan dan sinkronkan data dengan database
cloud NoSQL di seluruh klien secara realtime.
7
Files
8
Android File System
●Penyimpanan eksternal -- Direktori publik
●Penyimpanan internal -- Direktori pribadi hanya untuk aplikasi Anda
●Aplikasi dapat menelusuri struktur direktori
●Struktur dan operasi mirip dengan Linux dan java.io
9
Internal storage
●Selalu tersedia
●Menggunakan sistem file perangkat
●Hanya aplikasi Anda yang dapat mengakses file, kecuali secara eksplisit disetel
agar dapat dibaca atau ditulis
●Saat aplikasi dicopot pemasangannya, sistem akan menghapus semua file aplikasi
dari penyimpanan internal
10
Penyimpanan eksternal (External storage)
●Tidak selalu tersedia, dapat dihapus
●Menggunakan sistem file perangkat atau penyimpanan eksternal fisik seperti kartu
SD
●Dapat dibaca dunia, sehingga aplikasi apa pun dapat membaca
●Saat uninstall, sistem tidak menghapus file pribadi ke aplikasi
11
Kapan menggunakan
penyimpananinternal/eksternal?
Internal adalah yang terbaik ketika
●Anda ingin memastikan bahwa baik pengguna maupun aplikasi lain tidak dapat
mengakses file Anda
Eksternal adalah yang terbaik untuk file yang
●Tidak memerlukan pembatasan akses dan untuk
●Anda ingin berbagi dengan aplikasi lain
●Anda mengizinkan pengguna untuk mengakses dengan komputer
12
Menyimpan file pengguna di penyimpanan bersama
●Simpan file baru yang diperoleh pengguna melalui aplikasi Anda ke direktori
publik tempat aplikasi lain dapat mengaksesnya dan pengguna dapat dengan
mudah menyalinnya dari perangkat.
●Menyimpan file eksternal di direktori public.
13
Penyimpanan Internal
(Internal Storage)
14
Penyimpanan Internal (Internal Storage)
●Menggunakan direktori pribadi hanya untuk aplikasi Anda
●Aplikasi selalu memiliki izin untuk membaca / menulis
●Direktori penyimpanan permanen—getFilesDir()
●Direktori penyimpanan sementara—getCacheDir()
15
Membuat file
File file = new File(
context.getFilesDir(), filename);
Gunakan sta.ndar java.io Operator atau aliran file untuk berinteraksi dengan file
16
Penyimpanan Eksternal
(External Storage)
17
External Storage
●Pada perangkat atau kartu SD
●Menyetel izin di Manifes Android
○Izin menulis mencakup izin baca
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission
android:name="android.permission.READ_EXTERNAL_STORAGE" />
18
Selalu periksa ketersediaan penyimpanan
public boolean isExternalStorageWritable() {
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
return true;
}
return false;
}
19
Contoh external public directories
• DIRECTORY_ALARMS and DIRECTORY_RINGTONES
Untuk file audio untuk digunakan sebagai alarm dan nada dering
• DIRECTORY_DOCUMENTS
Untuk dokumen yang telah dibuat oleh pengguna
 DIRECTORY_DOWNLOADS
Untuk file yang telah diunduh oleh pengguna
developer.android.com/reference/android/os/Environment.html
20
Mengakses direktori eksternal publik
• Dapatkan jalur getExternalStoragePublicDirectory()
• Buat file
File path = Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES);
File file = new File(path, "DemoPicture.jpg");
21
Berapa banyak penyimpanan yang tersisa?
●Jika tidak ada cukup ruang, gunakan IOException
●Jika Anda mengetahui ukuran file, periksa ruang
○ getFreeSpace()
○ getTotalSpace().
●Jika Anda tidak tahu berapa banyak ruang dibutuhkan
○ try/catch IOException
22
Menghapus file tidak lagi diperlukan
●Penyimpanan eksternal
myFile.delete();
●Penyimpanan internal
myContext.deleteFile(fileName);
23
Jangan hapus file pengguna!
Saat pengguna meng-uninstal aplikasi Anda, direktori penyimpanan pribadi aplikasi
dan semua kontennya akan dihapus
Jangan gunakan penyimpanan pribadi untuk konten milik pengguna!
Misalnya:
Foto yang diambil atau diedit dengan aplikasi Anda
●Musik yang telah dibeli pengguna dengan aplikasi Anda
24
Preferensi Bersama & SQLite Database
25
SQLite Database
●Ideal untuk data berulang atau terstruktur, seperti kontak
●Android menyediakan database seperti SQL
●Tercakup dalam bab-bab berikut dan praktiknya
○SQLite Primer
○Pengantar SQLite Database
○SQLite Data Storage Praktis
○Mencari Database SQLite Praktis
26
Preferensi Bersama (Shared Preferences)
●Membaca dan menulis sejumlah kecil data primitif sebagai pasangan kunci/nilai
ke file di penyimpanan perangkat
●Dibahas dalam bab selanjutnya dan praktis
○Preferensi Bersama
27
Opsi Penyimpanan Lainnya
(More Storage Options)
28
Menggunakan Firebase untuk menyimpan dan berbagi data
Menyimpan dan menyinkronkan data dengan
database cloud Firebase
Data disinkronkan di semua klien, dan tetap
tersedia saat aplikasi Anda offline
firebase.google.com/docs/database/
29
Firebase Realtime Database
●Aplikasi yang terhubung berbagi data
●Dihosting di cloud
●Data disimpan sebagai JSON
●Data disinkronkan secara realtime ke setiap klien
yang terhubung
30
Koneksi Jaringan (Network Connection)
●Anda dapat menggunakan jaringan (bila tersedia) untuk menyimpan dan
mengambil data pada layanan berbasis web Anda sendiri
●Gunakan kelas dalam paket berikut
○java.net.*
○android.net.*
31
Backing up data
●Auto Backup untuk 6.0 (API level 23) dan yang lebih tinggi
●Mencadangkan data aplikasi ke cloud secara otomatis
●Tidak perlu kode dan gratis
●Menyesuaikan dan mengonfigurasi pencadangan otomatis untuk
aplikasi Anda
●Lihat Configuring Auto Backup for Apps
32
Backup API untuk Android 5.1 (API level 22)
• Daftar ke Android Backup Service untuk mendapatkan Backup Service Key
• Mengonfigurasi Manifes untuk menggunakan Layanan Pencadangan
• Membuat agen cadangan dengan memperluas kelas BackupAgentHelper
• Meminta pencadangan saat data telah berubah
• More info and sample code: Using the Backup AP dan Data Backup
33
Pelajari file lebih lanjut
● Menyimpan File
● dokumentasi getExternalFilesDir() dan sampel kode
● getExternalStoragePublicDirectory() dokumentasi dan sampel kode
● kelas java.io.File
● Oracle Java I / O Tutorial
34
Pelajari selengkapnya tentang pencadangan
●Mengonfigurasi Pencadangan Otomatis untuk Aplikasi
●Menggunakan API Cadangan
●Pencadangan Data
35
9.1 Shared Preferences
(Preferensi Bersama)
36
Isi
• Preferensi Bersama
• Mendengarkan perubahan
37
Apa itu Preferensi Bersama?
●Membaca dan menulis sejumlah kecil data primitif sebagai pasangan
kunci/nilai ke file di penyimpanan perangkat
●Kelas SharedPreference menyediakan API untuk membaca, menulis,
dan mengelola data ini
●Simpan data di onPause()
pulihkan di onCreate()
38
Preferensi Bersama DAN Status Instans Tersimpan
(Shared Preferences AND Stored Instance State)
• Sejumlah kecil pasangan kunci/nilai
• Data bersifat pribadi untuk aplikasi
39
Shared Preferences vs. Saved Instance State (Preferensi
Bersama vs. Status Instans Tersimpan)
• Mempertahankan data di seluruh sesi
pengguna, meskipun aplikasi dihentikan
dan dimulai ulang, atau perangkat di-
boot ulang
• Data yang harus diingat di seluruh sesi,
seperti setelan pilihan pengguna atau
skor game mereka
• Penggunaan umum adalah untuk
menyimpan preferensi pengguna
• Mempertahankan data status di seluruh
instans aktivitas dalam sesi pengguna
yang sama
• Data yang tidak boleh diingat di
seluruh sesi, seperti tab yang saat ini
dipilih atau status aktivitas saat ini.
• Penggunaan umum adalah untuk
membuat ulang status setelah perangkat
diputar
•
40
Membuat Preferensi Bersama
●Hanya perlu satu file Preferensi Bersama per aplikasi
●Beri nama dengan nama paket aplikasi Anda—unik dan mudah
dikaitkan dengan aplikasi
●Argumen MODE untuk getSharedPreferences() adalah untuk
kompatibilitas mundur—gunakan hanya MODE_PRIVATE agar aman
41
getSharedPreferences()
private String sharedPrefFile =
"com.example.android.hellosharedprefs";
mPreferences =
getSharedPreferences(sharedPrefFile,
MODE_PRIVATE);
42
Menyimpan preferensi bersama (Saving Shared
Preferences)
●SharedPreferences.Editor interface
●Menangani semua operasi file
●metode put menimpa jika ada kunci
●apply() menyimpan secara asinkron dan aman
43
SharedPreferences.Editor
@Override
protected void onPause() {
super.onPause();
SharedPreferences.Editor preferencesEditor =
mPreferences.edit();
preferencesEditor.putInt("count", mCount);
preferencesEditor.putInt("color", mCurrentColor);
preferencesEditor.apply();
}
44
Restoring Shared Preferences
(Memulihkanpreferensi bersama)
●Memulihkan di onCreate() dalam Aktivitas
●Metode get mengambil dua argumen—kunci, dan nilai default jika kunci tidak
dapat ditemukan.
●Gunakan argumen default sehingga Anda tidak perlu menguji apakah preferensi
ada dalam file.
45
Getting data in onCreate()
mPreferences = getSharedPreferences(sharedPrefFile,
MODE_PRIVATE);
if (savedInstanceState != null) {
mCount = mPreferences.getInt("count", 1);
mShowCount.setText(String.format("%s", mCount));
mCurrentColor = mPreferences.getInt("color",
mCurrentColor);
mShowCount.setBackgroundColor(mCurrentColor);
mNewText = mPreferences.getString("text", "");
} else { … }
46
Clearing
●Call clear() on the SharedPreferences.Editor dan menerapkan perubahan
●Anda dapat menggabungkan panggilan untuk put dan clear. Namun, ketika Anda
Apply (), clear () selalu dilakukan terlebih dahulu, terlepas dari urutannya!
47
clear()
SharedPreferences.Editor preferencesEditor =
mPreferences.edit();
preferencesEditor.clear();
preferencesEditor.apply();
48
Mendengarkan Perubahan
(Listening for Change)
49
Listening to changes
●Terapkan antarmuka
SharedPreference.OnSharedPreferenceChangeListener
●Daftar listener dengan registerOnSharedPreferenceChangeListener()
●Mendaftarkan dan membatalkan pendaftaran pendengar di
onResume() and onPause()
●Terapkan pada callback onSharedPreferenceChanged()
50
Antarmuka dan panggilan balik
(Interface and callback)
public class SettingsActivity extends AppCompatActivity
implements OnSharedPreferenceChangeListener { ...
public void onSharedPreferenceChanged(
SharedPreferences sharedPreferences, String key) {
if (key.equals(MY_KEY)) {
// Do something
}
}
}
51
Creating and registering listener
SharedPreferences.OnSharedPreferenceChangeListener listener =
new SharedPreferences.OnSharedPreferenceChangeListener() {
public void onSharedPreferenceChanged(
SharedPreferences prefs, String key) {
// Implement listener here
}
};
prefs.registerOnSharedPreferenceChangeListener(listener);
52
Anda membutuhkan referensi KUAT untuk pendengar
●Saat mendaftarkan pendengar, manajer preferensi tidak menyimpan referensi yang
kuat kepada pendengar
●Anda harus menyimpan referensi yang kuat kepada pendengar, atau akan rentan
terhadap pengumpulan sampah
●Simpan referensi ke listener dalam data instance dari objek yang akan ada selama
Anda membutuhkan listener
53
Practical: HelloSharedPrefs
●Menambahkan Preferensi Bersama ke app pemula
●Tambahkan tombol "Reset" yang menghapus status
aplikasi dan preferensi untuk aplikasi
54
Pelajari lebih lanjut
● Menyimpan Data
● Opsi Penyimpanan
● Menyimpan Set Kunci-Nilai
● Preferensi Bersama
● SharedPreferences.Editor
Stackoverflow
● How to use SharedPreferences in Android to store, fetch and edit values
● onSavedInstanceState vs. SharedPreferences
55
9.2 Pengaturan aplikasi (Application settings)
56
Isi
●Apa itu pengaturan?
●Layar pengaturan
●Menerapkan pengaturan
●Pengaturan default
●Simpan dan ambil pengaturan
●Merespons perubahan dalam pengaturan
●Ringkasan untuk pengaturan
●Template Aktivitas Pengaturan
57
Settings
58
Apa itu app settings?
●Pengguna dapat mengatur fitur dan perilaku aplikasi
Contoh:
○Lokasi rumah, unit pengukuran default
○Perilaku notifikasi untuk aplikasi tertentu
●Untuk nilai yang jarang berubah dan relevan bagi sebagian besar
pengguna
●Jika nilai sering berubah, gunakan menu opsi atau laci navigasi
59
Contoh pengaturan
60
Mengakses pengaturan
Pengguna mengakses
pengaturan melalui:
• Laci navigasi
• Menu opsi
61
Layar pengaturan
(Setting screens)
62
Mengatur pengaturan Anda
●Jumlah opsi yang dapat diprediksi dan dikelola
●7 atau kurang: atur sesuai prioritas dengan yang paling
penting di atas
●Pengaturan 7-15: Kelompokkan pengaturan terkait di
bawah Pembagi Bagian
63
16+ Settings
●Kelompokkan ke dalam layar
yang dibuka dari layar
Pengaturan utama
64
Lihat versus Preferensi
●Gunakan objek Preferensi alih-alih Lihat objek di layar Pengaturan
Anda
●Mendesain dan mengedit objek Preferensi di editor tata letak seperti
yang Anda lakukan untuk Lihat objek
65
Tentukan Pengaturan di Layar Preferensi(Specify
Settings on the Preferences Screen)
●Menentukan pengaturan di layar
preferensi
●Ini seperti tata letak
●Definisikan dalam:
res > xml > preferences.xml
66
Preference Screen example
<PreferenceScreen>
<PreferenceCategory
android:title="Flight Preferences">
<CheckBoxPreference
android:title="Wake for meals"
... />
<EditTextPreference
android:title="Favorite city"
.../>
</PreferenceCategory>
</PreferenceScreen>
67
Setiap Preferensi harus memiliki kunci
●Setiap preferensi harus memiliki kunci
●Android menggunakan kunci untuk menyimpan nilai setelan
●<EditTextPreference
android:title="Favorite city"
android:key="fav_city"
… />
68
Switch Preference
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
<SwitchPreference
android:defaultValue="true"
android:title="@string/pref_title_social"
android:key="switch"
android:summary="@string/pref_sum_social" />
</PreferenceScreen>
69
Switch Preference attributes
●android:defaultValue—true secara default
●android:summary—teks di bawah setelan, untuk beberapa setelan, harus berubah
untuk mencerminkan nilai
●android:title—judul/nama
●android:key—key untuk menyimpan nilai di SharedPreferences
70
EditTextPreference
<EditTextPreference
android:capitalize="words"
android:inputType="textCapWords"
android:key="user_display_name"
android:maxLines="1"
android:defaultValue="@string/pref_default_display_name"
android:title="@string/pref_title_display_name" />
71
ListPreference
<ListPreference
android:defaultValue="-1"
android:key="add_friends_key"
android:entries="@array/pref_example_list_titles"
android:entryValues="@array/pref_example_list_values"
android:title="@string/pref_title_add_friends_to_messages"
/>
72
ListPreference
●Nilai default -1 tanpa pilihan
●android:entries—Array label untuk tombol radio
●android:entryValues —Tombol radio array nilai
73
Preference class
●Preference class menyediakan View untuk setiap jenis pengaturan
●asosiasi Lihat dengan SharedPreferences antarmuka untuk menyimpan /
mengambil data preferensi
●Menggunakan kunci dalam Preferensi untuk menyimpan nilai pengaturan
74
Subclass Preferece
●CheckBoxPreference—item daftar yang memperlihatkan kotak centang
●ListPreference—Membuka dialog dengan daftar tombol radio
●SwitchPreference—Opsi toggleable dua status
●EditTextPreference—yang membuka dialog dengan EditText
●RingtonePreference—memungkinkan pengguna untuk memilih nada dering
75
Kelas untuk pengelompokan (Classes for grouping)
●PreferenceScreen
○akar hierarki tata letak Preferensi
○di bagian atas setiap layar pengaturan
●PreferenceGroup
○Untuk grup pengaturan (Preference objects).
●PreferenceCategory
○judul di atas grup sebagai pemisah bagian
76
Menerapkan pengaturan
(Implement settings)
77
UI Pengaturan menggunakan fragmen
●Menggunakan Aktivitas dengan Fragmen untuk menampilkan layar
Pengaturan
●Gunakan subclass Activity dan Fragment khusus yang menangani
pekerjaan menyimpan setelan
78
Aktivitas dan fragmen untuk setelan
●Android 3.0 dan yang lebih baru:
○AppCompatActivity dengan PreferenceFragmentCompat
○Atau gunakan Activity dengan PreferenceFragment
●Android lebih lama dari 3.0 (API level 10 dan lebih rendah):
○buat aktivitas pengaturan khusus sebagai ekstensi dari kelas
PreferenceActivity (gunakan template!)
Pelajaran
berfokus
pada hal
ini!
79
Langkah-langkah untuk menerapkan Pengaturan
Untuk AppCompatActivity dengan PreferenceFragmentCompat:
●Membuat layar preferensi
●Membuat Aktivitas untuk pengaturan
●Membuat Fragmen untuk setelan
●Menambahkan preferenceTheme ke AppTheme
●Menambahkan kode untuk memanggil UI Pengaturan
80
Template Aktivitas Dasar
● Template Aktivitas Dasar
Termasuk menu opsi
● Settings Item menu disediakan
untuk menu opsi
81
Membuat subkelas Aktivitas Setelan
●Memperluas AppCompatActivity
●di onCreate() menampilkan Fragmen pengaturan:
getSupportFragmentManager()
.beginTransaction()
.replace(android.R.id.content,
new MySettingsFragment())
.commit();
82
Contoh Aktivitas Pengaturan
public class MySettingsActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getSupportFragmentManager().beginTransaction()
.replace(android.R.id.content, new
MySettingsFragment())
.commit();
}
}
This is the
whole class!
83
Membuat subclass Fragmen Setelan
●Extends PreferenceFragmentCompat
●Implementasi Metode:
○ onCreatePreferences() menampilkan pengaturan
○ setOnPreferenceChangeListener() menangani
perubahan apa pun yang perlu terjadi saat pengguna
mengubah preferensi (opsional)
84
PreferenceFragment
public class MySettingsFragment
extends PreferenceFragmentCompat { …}
●Fragmen kosong menyertakan onCreateView() secara default
●Ganti onCreateView() dengan onCreatePreferences()
karena fragmen ini menampilkan layar preferensi
85
Contoh Fragmen Pengaturan
public class MySettingsFragment extends
PreferenceFragmentCompat {
@Override
public void onCreatePreferences(Bundle savedInstanceState,
String rootKey) {
setPreferencesFromResource(R.xml.preferences,
rootKey);
}
}
86
Tambahkan PreferenceTheme ke tema aplikasi
Jika menggunakan PreferenceFragmentCompat, atur preferenceTheme
di styles.xml:
<style name="AppTheme" parent="...">
...
<item name="preferenceTheme">
@style/PreferenceThemeOverlay
</item>
…
</style>
87
Memanggil UI Pengaturan
Kirim Intent untuk memulai Aktivitas Pengaturan:
●Dari menu Opsi, perbarui pada OptionItemsSelected()
●Dari laci Navigasi, perbarui onItemClick() pada OnItemClickListener
diberikan kepada setOnItemClickListener
88
Pengaturan Default
(Default Settings)
89
Default settings
●Atur default ke nilai yang akan dipilih sebagian besar pengguna
○ Semua kontak
●Gunakan lebih sedikit daya baterai
o Bluetooth nonaktif hingga pengguna mengaktifkannya
●Risiko paling kecil terhadap keamanan dan kehilangan data
o Mengarsipkan daripada menghapus pesan
●Interupsi hanya jika penting
o Saat panggilan dan pemberitahuan masuk
90
Menetapkan nilai default (Set Default Value)
●Use android:defaultValue in Preference view in xml:
<EditTextPreference
android:defaultValue="London"
… />
●In onCreate() of MainActivity, save default values.
91
Menyimpan nilai default di preferensi bersama
In onCreate() of MainActivity
PreferenceManager.setDefaultValues(
this, R.xml.preferences, false);
●App context, seperti ini
●ID sumber daya file sumber daya XML dengan pengaturan
●Metode false only calls saat pertama kali aplikasi dimulai
92
Simpan dan ambil pengaturan
(Save and retrieve settings)
93
Menyimpan nilai pengaturan
●Tidak perlu menulis kode untuk menyimpan pengaturan!
●Jika Anda menggunakan Aktivitas Preferensi dan Fragmen khusus,
Android akan otomatis menyimpan nilai setelan di preferensi bersama
94
Mendapatkan pengaturan dari preferensi bersama
●Di kode Anda, dapatkan setelan dari preferensi bersama default
●Gunakan kunci seperti yang ditentukan dalam tampilan preferensi dalam xml
●SharedPreferences sharedPref =
PreferenceManager.getDefaultSharedPreferences(this);
String destinationPref =
sharedPref.getString("fav_city", "Jamaica");
95
Mendapatkan nilai pengaturan dari preferensi bersama
●In preference definition in xml:
<EditTextPreference
android:defaultValue="London"
android:key="fav_city" />
●In code, get fav_city setting:
String destinationPref =
sharedPref.getString("fav_city", "Jamaica");
Nilai pengaturan default
berbeda dari
nilai default dikembalikan
oleh pref.getString() jika
kunci tidak ditemukan di
prefs bersama
96
Merespons perubahan dalam pengaturan
(Respond to changes in settings)
97
Mendengarkan perubahan (Listen for chang)
●Menampilkan pengaturan tindak lanjut terkait
●Menonaktifkan atau mengaktifkan pengaturan terkait
●Mengubah ringkasan untuk mencerminkan pilihan saat ini
●Bertindak berdasarkan pengaturan
●Misalnya, jika pengaturan mengubah latar belakang layar, maka ubah
latar belakang
98
Mendengarkan perubahan pada pengaturan (Listen
for changes to settings)
●Define setOnPreferenceChangeListener()
●in onCreatePreferences() in the Settings Fragment
99
onCreatePreferences() example
@Override
public void onCreatePreferences(Bundle savedInstanceState,
String rootKey) {
setPreferencesFromResource(R.xml.preferences, rootKey);
ListPreference colorPref =
(ListPreference)
findPreference("color_pref");
colorPref.setOnPreferenceChangeListener(
// see next slide
// ...);
}
100
onPreferenceChangeListener() example
Contoh: Mengubah warna latar belakang saat mengatur perubahan
colorPref.setOnPreferenceChangeListener(
new Preference.OnPreferenceChangeListener(){
@Override
public boolean onPreferenceChange(
Preference preference, Object newValue){
setMyBackgroundColor(newValue);
return true;
}
});
101
Ringkasan untuk pengaturan
(Summaries for settings)
102
Ringkasan untuk nilai true/false
Mengatur atribut untuk menentukan ringkasan bersyarat untuk preferensi
yang memiliki nilai true/false.
103
Ringkasan untuk pengaturan lain
Untuk pengaturan yang memiliki nilai selain true/false, perbarui ringkasan saat
nilai pengaturan berubah
Mengatur ringkasan di onPreferenceChangeListener()
104
Set summary example
EditTextPreference cityPref = (EditTextPreference)
findPreference("fav_city");
cityPref.setOnPreferenceChangeListener(
new Preference.OnPreferenceChangeListener(){
@Override
public boolean onPreferenceChange(Preference pref, Object
value){
String city = value.toString();
pref.setSummary("Your favorite city is " + city);
return true;
}
});
105
Template Aktivitas
(Activity Template)
106
Lebih kompleks?
Untuk sesuatu yang lebih kompleks
?
gunakan template Aktivitas Pengaturan!
107
Template Aktivitas Pengaturan (Setting Activity Template)
● Pengaturan Kompleks
● Kompatibilitas mundur
● Menyesuaikan setelan yang
telah diisi sebelumnya
● Tata letak adaptif untuk
ponsel dan tablet
Tablet
Phone
108
Pelajari lebih lanjut
109
Pelajari lebih lanjut
●Panduan Pengguna Android Studio
●Pengaturan (pengkodean)
●Kelas preferensi
●PreferenceFragment
●Fragmen
●Preferensi Bersama
●Menyimpan Set Kunci-Nilai
●Pengaturan (desain)
Referensi
1. Google, D. (2021, 09 24). Dasar-Dasar Developer Android. Retrieved from Google Developers:
https://developers.google.com/training/courses/android-fundamentals?hl=id
Terima Kasih
Riad Sahara, S.SI., MT

More Related Content

Similar to Pertemuan 13 - Shared Preferences and Settings.pptx

Database For Software Development Trend
Database For Software Development TrendDatabase For Software Development Trend
Database For Software Development TrendLogistyo Yulistianto
 
Chapter 1 konsep arsit
Chapter 1 konsep arsitChapter 1 konsep arsit
Chapter 1 konsep arsitSetyady Peace
 
Materi mata kuliah_basis_data_it_konsep lili
Materi mata kuliah_basis_data_it_konsep liliMateri mata kuliah_basis_data_it_konsep lili
Materi mata kuliah_basis_data_it_konsep lililili kinari
 
Kp.2 pembuatan database
Kp.2 pembuatan databaseKp.2 pembuatan database
Kp.2 pembuatan databaseDesty Yani
 
Konsep Sistem Manajemen BasisData
Konsep Sistem Manajemen BasisDataKonsep Sistem Manajemen BasisData
Konsep Sistem Manajemen BasisDataRobby Firmansyah
 
SIM, Mercu Buana, Aprilia Rahmawati, 43215120286 - keamanan jaringan dari hacker
SIM, Mercu Buana, Aprilia Rahmawati, 43215120286 - keamanan jaringan dari hackerSIM, Mercu Buana, Aprilia Rahmawati, 43215120286 - keamanan jaringan dari hacker
SIM, Mercu Buana, Aprilia Rahmawati, 43215120286 - keamanan jaringan dari hackerAprilia Rahmawati
 
Slide struktur codeigneter
Slide struktur codeigneterSlide struktur codeigneter
Slide struktur codeigneterCecilia Cintahta
 
Slide-INF106-Pertemuan-1-Pengantar-Sistem-Basis-Data.ppt
Slide-INF106-Pertemuan-1-Pengantar-Sistem-Basis-Data.pptSlide-INF106-Pertemuan-1-Pengantar-Sistem-Basis-Data.ppt
Slide-INF106-Pertemuan-1-Pengantar-Sistem-Basis-Data.pptNikoEstradiyanto1
 
Slide-INF106-Pertemuan-1-Pengantar-Sistem-Basis-Data.ppt
Slide-INF106-Pertemuan-1-Pengantar-Sistem-Basis-Data.pptSlide-INF106-Pertemuan-1-Pengantar-Sistem-Basis-Data.ppt
Slide-INF106-Pertemuan-1-Pengantar-Sistem-Basis-Data.pptNikoEstradiyanto1
 
Slide-INF106-Pertemuan-1-Pengantar-Sistem-Basis-Data.ppt
Slide-INF106-Pertemuan-1-Pengantar-Sistem-Basis-Data.pptSlide-INF106-Pertemuan-1-Pengantar-Sistem-Basis-Data.ppt
Slide-INF106-Pertemuan-1-Pengantar-Sistem-Basis-Data.pptPutriDewintari1
 
Slide-INF106-INF106-Slide-01.ppt
Slide-INF106-INF106-Slide-01.pptSlide-INF106-INF106-Slide-01.ppt
Slide-INF106-INF106-Slide-01.pptafidatulmasbakhah1
 
Tugas sim, pratiwi rosantry,yananto mihadi putra,se, m.si, sistem manajemen b...
Tugas sim, pratiwi rosantry,yananto mihadi putra,se, m.si, sistem manajemen b...Tugas sim, pratiwi rosantry,yananto mihadi putra,se, m.si, sistem manajemen b...
Tugas sim, pratiwi rosantry,yananto mihadi putra,se, m.si, sistem manajemen b...Pratiwi Rosantry
 

Similar to Pertemuan 13 - Shared Preferences and Settings.pptx (20)

Database For Software Development Trend
Database For Software Development TrendDatabase For Software Development Trend
Database For Software Development Trend
 
Pengertian data base
Pengertian data basePengertian data base
Pengertian data base
 
Chapter 1 konsep arsit
Chapter 1 konsep arsitChapter 1 konsep arsit
Chapter 1 konsep arsit
 
Materi mata kuliah_basis_data_it_konsep lili
Materi mata kuliah_basis_data_it_konsep liliMateri mata kuliah_basis_data_it_konsep lili
Materi mata kuliah_basis_data_it_konsep lili
 
P8
P8P8
P8
 
Basis data2
Basis data2Basis data2
Basis data2
 
Kp.2 pembuatan database
Kp.2 pembuatan databaseKp.2 pembuatan database
Kp.2 pembuatan database
 
Ppt db2
Ppt db2Ppt db2
Ppt db2
 
Konsep Sistem Manajemen BasisData
Konsep Sistem Manajemen BasisDataKonsep Sistem Manajemen BasisData
Konsep Sistem Manajemen BasisData
 
Login.hotspot.bsi
Login.hotspot.bsiLogin.hotspot.bsi
Login.hotspot.bsi
 
Pertemuan 1
Pertemuan 1Pertemuan 1
Pertemuan 1
 
SIM, Mercu Buana, Aprilia Rahmawati, 43215120286 - keamanan jaringan dari hacker
SIM, Mercu Buana, Aprilia Rahmawati, 43215120286 - keamanan jaringan dari hackerSIM, Mercu Buana, Aprilia Rahmawati, 43215120286 - keamanan jaringan dari hacker
SIM, Mercu Buana, Aprilia Rahmawati, 43215120286 - keamanan jaringan dari hacker
 
Kuliah i sbd
Kuliah i sbdKuliah i sbd
Kuliah i sbd
 
Slide struktur codeigneter
Slide struktur codeigneterSlide struktur codeigneter
Slide struktur codeigneter
 
1._Pengantar_BasisData_.ppt
1._Pengantar_BasisData_.ppt1._Pengantar_BasisData_.ppt
1._Pengantar_BasisData_.ppt
 
Slide-INF106-Pertemuan-1-Pengantar-Sistem-Basis-Data.ppt
Slide-INF106-Pertemuan-1-Pengantar-Sistem-Basis-Data.pptSlide-INF106-Pertemuan-1-Pengantar-Sistem-Basis-Data.ppt
Slide-INF106-Pertemuan-1-Pengantar-Sistem-Basis-Data.ppt
 
Slide-INF106-Pertemuan-1-Pengantar-Sistem-Basis-Data.ppt
Slide-INF106-Pertemuan-1-Pengantar-Sistem-Basis-Data.pptSlide-INF106-Pertemuan-1-Pengantar-Sistem-Basis-Data.ppt
Slide-INF106-Pertemuan-1-Pengantar-Sistem-Basis-Data.ppt
 
Slide-INF106-Pertemuan-1-Pengantar-Sistem-Basis-Data.ppt
Slide-INF106-Pertemuan-1-Pengantar-Sistem-Basis-Data.pptSlide-INF106-Pertemuan-1-Pengantar-Sistem-Basis-Data.ppt
Slide-INF106-Pertemuan-1-Pengantar-Sistem-Basis-Data.ppt
 
Slide-INF106-INF106-Slide-01.ppt
Slide-INF106-INF106-Slide-01.pptSlide-INF106-INF106-Slide-01.ppt
Slide-INF106-INF106-Slide-01.ppt
 
Tugas sim, pratiwi rosantry,yananto mihadi putra,se, m.si, sistem manajemen b...
Tugas sim, pratiwi rosantry,yananto mihadi putra,se, m.si, sistem manajemen b...Tugas sim, pratiwi rosantry,yananto mihadi putra,se, m.si, sistem manajemen b...
Tugas sim, pratiwi rosantry,yananto mihadi putra,se, m.si, sistem manajemen b...
 

More from HendroGunawan8

Jaringan VOIP Ringkasan Video Pertemuan Ke-4.pdf
Jaringan VOIP Ringkasan Video Pertemuan Ke-4.pdfJaringan VOIP Ringkasan Video Pertemuan Ke-4.pdf
Jaringan VOIP Ringkasan Video Pertemuan Ke-4.pdfHendroGunawan8
 
Estetika Humanisme Diskusi Modul Part Ke-4 (DipulihkanOtomatis).pdf
Estetika Humanisme Diskusi Modul Part Ke-4 (DipulihkanOtomatis).pdfEstetika Humanisme Diskusi Modul Part Ke-4 (DipulihkanOtomatis).pdf
Estetika Humanisme Diskusi Modul Part Ke-4 (DipulihkanOtomatis).pdfHendroGunawan8
 
Estetika Humanisme Diskusi Video Sesi Ke-4.pdf
Estetika Humanisme Diskusi Video Sesi Ke-4.pdfEstetika Humanisme Diskusi Video Sesi Ke-4.pdf
Estetika Humanisme Diskusi Video Sesi Ke-4.pdfHendroGunawan8
 
Pengolahan Citra Diskusi Pertemuan Ke-4.pdf
Pengolahan Citra Diskusi Pertemuan Ke-4.pdfPengolahan Citra Diskusi Pertemuan Ke-4.pdf
Pengolahan Citra Diskusi Pertemuan Ke-4.pdfHendroGunawan8
 
Diskusi Modul Sistem Pakar Sesi Ke-4.pdf
Diskusi Modul Sistem Pakar Sesi Ke-4.pdfDiskusi Modul Sistem Pakar Sesi Ke-4.pdf
Diskusi Modul Sistem Pakar Sesi Ke-4.pdfHendroGunawan8
 
Diskusi PPT Sistem Pakar Sesi Ke-4 Simple Naïve Bayesian Classifier .pdf
Diskusi PPT Sistem Pakar Sesi Ke-4 Simple Naïve Bayesian Classifier .pdfDiskusi PPT Sistem Pakar Sesi Ke-4 Simple Naïve Bayesian Classifier .pdf
Diskusi PPT Sistem Pakar Sesi Ke-4 Simple Naïve Bayesian Classifier .pdfHendroGunawan8
 
Estetika Humanisme Diskusi Modul Part Ke-3.pdf
Estetika Humanisme Diskusi Modul Part Ke-3.pdfEstetika Humanisme Diskusi Modul Part Ke-3.pdf
Estetika Humanisme Diskusi Modul Part Ke-3.pdfHendroGunawan8
 
Diskusi Modul Sistem Pakar Sesi Ke-3.pdf
Diskusi Modul Sistem Pakar Sesi Ke-3.pdfDiskusi Modul Sistem Pakar Sesi Ke-3.pdf
Diskusi Modul Sistem Pakar Sesi Ke-3.pdfHendroGunawan8
 
Diskusi Modul Sistem Pakar Sesi Ke-3.pdf
Diskusi Modul Sistem Pakar Sesi Ke-3.pdfDiskusi Modul Sistem Pakar Sesi Ke-3.pdf
Diskusi Modul Sistem Pakar Sesi Ke-3.pdfHendroGunawan8
 
Estetika Humanisme Diskusi Video Sesi Ke-3 (DipulihkanOtomatis).pdf
Estetika Humanisme Diskusi Video Sesi Ke-3 (DipulihkanOtomatis).pdfEstetika Humanisme Diskusi Video Sesi Ke-3 (DipulihkanOtomatis).pdf
Estetika Humanisme Diskusi Video Sesi Ke-3 (DipulihkanOtomatis).pdfHendroGunawan8
 
Pengolahan Citra Diskusi Pertemuan Ke-2.pdf
Pengolahan Citra Diskusi Pertemuan Ke-2.pdfPengolahan Citra Diskusi Pertemuan Ke-2.pdf
Pengolahan Citra Diskusi Pertemuan Ke-2.pdfHendroGunawan8
 
Protokol dan prosedur yang menyediakan layanan komunikasi multimedia audio, v...
Protokol dan prosedur yang menyediakan layanan komunikasi multimedia audio, v...Protokol dan prosedur yang menyediakan layanan komunikasi multimedia audio, v...
Protokol dan prosedur yang menyediakan layanan komunikasi multimedia audio, v...HendroGunawan8
 
Estetika Humanisme Diskusi Modul Ke-2 Sesi Ke-2.pdf
Estetika Humanisme Diskusi Modul Ke-2 Sesi Ke-2.pdfEstetika Humanisme Diskusi Modul Ke-2 Sesi Ke-2.pdf
Estetika Humanisme Diskusi Modul Ke-2 Sesi Ke-2.pdfHendroGunawan8
 
Estetika Humanisme Diskusi Modul Ke-1 Pertemuan Ke-2.pdf
Estetika Humanisme Diskusi Modul Ke-1 Pertemuan Ke-2.pdfEstetika Humanisme Diskusi Modul Ke-1 Pertemuan Ke-2.pdf
Estetika Humanisme Diskusi Modul Ke-1 Pertemuan Ke-2.pdfHendroGunawan8
 
Estetika Humanisme Diskusi Video Sesi Ke-1.pdf
Estetika Humanisme Diskusi Video Sesi Ke-1.pdfEstetika Humanisme Diskusi Video Sesi Ke-1.pdf
Estetika Humanisme Diskusi Video Sesi Ke-1.pdfHendroGunawan8
 
Jaringan VOIP Ringkasan PTT Pertemuan Ke-1.pdf
Jaringan VOIP Ringkasan PTT Pertemuan Ke-1.pdfJaringan VOIP Ringkasan PTT Pertemuan Ke-1.pdf
Jaringan VOIP Ringkasan PTT Pertemuan Ke-1.pdfHendroGunawan8
 
PSTN adalah kumpulan jaringan telepon umum yang saling terhubung di seluruh d...
PSTN adalah kumpulan jaringan telepon umum yang saling terhubung di seluruh d...PSTN adalah kumpulan jaringan telepon umum yang saling terhubung di seluruh d...
PSTN adalah kumpulan jaringan telepon umum yang saling terhubung di seluruh d...HendroGunawan8
 
Pengolahan citra digital adalah teknologi visual yang digunakan untuk mengama...
Pengolahan citra digital adalah teknologi visual yang digunakan untuk mengama...Pengolahan citra digital adalah teknologi visual yang digunakan untuk mengama...
Pengolahan citra digital adalah teknologi visual yang digunakan untuk mengama...HendroGunawan8
 
Sistem pakar (expert system) adalah sistem yang berusaha mengadopsi pengetahu...
Sistem pakar (expert system) adalah sistem yang berusaha mengadopsi pengetahu...Sistem pakar (expert system) adalah sistem yang berusaha mengadopsi pengetahu...
Sistem pakar (expert system) adalah sistem yang berusaha mengadopsi pengetahu...HendroGunawan8
 
Estetika Humanisme Ringkasan Pertemuan 1.pdf
Estetika Humanisme Ringkasan Pertemuan 1.pdfEstetika Humanisme Ringkasan Pertemuan 1.pdf
Estetika Humanisme Ringkasan Pertemuan 1.pdfHendroGunawan8
 

More from HendroGunawan8 (20)

Jaringan VOIP Ringkasan Video Pertemuan Ke-4.pdf
Jaringan VOIP Ringkasan Video Pertemuan Ke-4.pdfJaringan VOIP Ringkasan Video Pertemuan Ke-4.pdf
Jaringan VOIP Ringkasan Video Pertemuan Ke-4.pdf
 
Estetika Humanisme Diskusi Modul Part Ke-4 (DipulihkanOtomatis).pdf
Estetika Humanisme Diskusi Modul Part Ke-4 (DipulihkanOtomatis).pdfEstetika Humanisme Diskusi Modul Part Ke-4 (DipulihkanOtomatis).pdf
Estetika Humanisme Diskusi Modul Part Ke-4 (DipulihkanOtomatis).pdf
 
Estetika Humanisme Diskusi Video Sesi Ke-4.pdf
Estetika Humanisme Diskusi Video Sesi Ke-4.pdfEstetika Humanisme Diskusi Video Sesi Ke-4.pdf
Estetika Humanisme Diskusi Video Sesi Ke-4.pdf
 
Pengolahan Citra Diskusi Pertemuan Ke-4.pdf
Pengolahan Citra Diskusi Pertemuan Ke-4.pdfPengolahan Citra Diskusi Pertemuan Ke-4.pdf
Pengolahan Citra Diskusi Pertemuan Ke-4.pdf
 
Diskusi Modul Sistem Pakar Sesi Ke-4.pdf
Diskusi Modul Sistem Pakar Sesi Ke-4.pdfDiskusi Modul Sistem Pakar Sesi Ke-4.pdf
Diskusi Modul Sistem Pakar Sesi Ke-4.pdf
 
Diskusi PPT Sistem Pakar Sesi Ke-4 Simple Naïve Bayesian Classifier .pdf
Diskusi PPT Sistem Pakar Sesi Ke-4 Simple Naïve Bayesian Classifier .pdfDiskusi PPT Sistem Pakar Sesi Ke-4 Simple Naïve Bayesian Classifier .pdf
Diskusi PPT Sistem Pakar Sesi Ke-4 Simple Naïve Bayesian Classifier .pdf
 
Estetika Humanisme Diskusi Modul Part Ke-3.pdf
Estetika Humanisme Diskusi Modul Part Ke-3.pdfEstetika Humanisme Diskusi Modul Part Ke-3.pdf
Estetika Humanisme Diskusi Modul Part Ke-3.pdf
 
Diskusi Modul Sistem Pakar Sesi Ke-3.pdf
Diskusi Modul Sistem Pakar Sesi Ke-3.pdfDiskusi Modul Sistem Pakar Sesi Ke-3.pdf
Diskusi Modul Sistem Pakar Sesi Ke-3.pdf
 
Diskusi Modul Sistem Pakar Sesi Ke-3.pdf
Diskusi Modul Sistem Pakar Sesi Ke-3.pdfDiskusi Modul Sistem Pakar Sesi Ke-3.pdf
Diskusi Modul Sistem Pakar Sesi Ke-3.pdf
 
Estetika Humanisme Diskusi Video Sesi Ke-3 (DipulihkanOtomatis).pdf
Estetika Humanisme Diskusi Video Sesi Ke-3 (DipulihkanOtomatis).pdfEstetika Humanisme Diskusi Video Sesi Ke-3 (DipulihkanOtomatis).pdf
Estetika Humanisme Diskusi Video Sesi Ke-3 (DipulihkanOtomatis).pdf
 
Pengolahan Citra Diskusi Pertemuan Ke-2.pdf
Pengolahan Citra Diskusi Pertemuan Ke-2.pdfPengolahan Citra Diskusi Pertemuan Ke-2.pdf
Pengolahan Citra Diskusi Pertemuan Ke-2.pdf
 
Protokol dan prosedur yang menyediakan layanan komunikasi multimedia audio, v...
Protokol dan prosedur yang menyediakan layanan komunikasi multimedia audio, v...Protokol dan prosedur yang menyediakan layanan komunikasi multimedia audio, v...
Protokol dan prosedur yang menyediakan layanan komunikasi multimedia audio, v...
 
Estetika Humanisme Diskusi Modul Ke-2 Sesi Ke-2.pdf
Estetika Humanisme Diskusi Modul Ke-2 Sesi Ke-2.pdfEstetika Humanisme Diskusi Modul Ke-2 Sesi Ke-2.pdf
Estetika Humanisme Diskusi Modul Ke-2 Sesi Ke-2.pdf
 
Estetika Humanisme Diskusi Modul Ke-1 Pertemuan Ke-2.pdf
Estetika Humanisme Diskusi Modul Ke-1 Pertemuan Ke-2.pdfEstetika Humanisme Diskusi Modul Ke-1 Pertemuan Ke-2.pdf
Estetika Humanisme Diskusi Modul Ke-1 Pertemuan Ke-2.pdf
 
Estetika Humanisme Diskusi Video Sesi Ke-1.pdf
Estetika Humanisme Diskusi Video Sesi Ke-1.pdfEstetika Humanisme Diskusi Video Sesi Ke-1.pdf
Estetika Humanisme Diskusi Video Sesi Ke-1.pdf
 
Jaringan VOIP Ringkasan PTT Pertemuan Ke-1.pdf
Jaringan VOIP Ringkasan PTT Pertemuan Ke-1.pdfJaringan VOIP Ringkasan PTT Pertemuan Ke-1.pdf
Jaringan VOIP Ringkasan PTT Pertemuan Ke-1.pdf
 
PSTN adalah kumpulan jaringan telepon umum yang saling terhubung di seluruh d...
PSTN adalah kumpulan jaringan telepon umum yang saling terhubung di seluruh d...PSTN adalah kumpulan jaringan telepon umum yang saling terhubung di seluruh d...
PSTN adalah kumpulan jaringan telepon umum yang saling terhubung di seluruh d...
 
Pengolahan citra digital adalah teknologi visual yang digunakan untuk mengama...
Pengolahan citra digital adalah teknologi visual yang digunakan untuk mengama...Pengolahan citra digital adalah teknologi visual yang digunakan untuk mengama...
Pengolahan citra digital adalah teknologi visual yang digunakan untuk mengama...
 
Sistem pakar (expert system) adalah sistem yang berusaha mengadopsi pengetahu...
Sistem pakar (expert system) adalah sistem yang berusaha mengadopsi pengetahu...Sistem pakar (expert system) adalah sistem yang berusaha mengadopsi pengetahu...
Sistem pakar (expert system) adalah sistem yang berusaha mengadopsi pengetahu...
 
Estetika Humanisme Ringkasan Pertemuan 1.pdf
Estetika Humanisme Ringkasan Pertemuan 1.pdfEstetika Humanisme Ringkasan Pertemuan 1.pdf
Estetika Humanisme Ringkasan Pertemuan 1.pdf
 

Recently uploaded

11 PPT Pancasila sebagai Paradigma Kehidupan dalam Masyarakat.pptx
11 PPT Pancasila sebagai Paradigma Kehidupan dalam Masyarakat.pptx11 PPT Pancasila sebagai Paradigma Kehidupan dalam Masyarakat.pptx
11 PPT Pancasila sebagai Paradigma Kehidupan dalam Masyarakat.pptxMiftahunnajahTVIBS
 
soal AKM Mata Pelajaran PPKN kelas .pptx
soal AKM Mata Pelajaran PPKN kelas .pptxsoal AKM Mata Pelajaran PPKN kelas .pptx
soal AKM Mata Pelajaran PPKN kelas .pptxazhari524
 
Sesi 1_PPT Ruang Kolaborasi Modul 1.3 _ ke 1_PGP Angkatan 10.pptx
Sesi 1_PPT Ruang Kolaborasi Modul 1.3 _ ke 1_PGP Angkatan 10.pptxSesi 1_PPT Ruang Kolaborasi Modul 1.3 _ ke 1_PGP Angkatan 10.pptx
Sesi 1_PPT Ruang Kolaborasi Modul 1.3 _ ke 1_PGP Angkatan 10.pptxSovyOktavianti
 
Materi Strategi Perubahan dibuat oleh kelompok 5
Materi Strategi Perubahan dibuat oleh kelompok 5Materi Strategi Perubahan dibuat oleh kelompok 5
Materi Strategi Perubahan dibuat oleh kelompok 5KIKI TRISNA MUKTI
 
AKSI NYATA NARKOBA ATAU OBAT TERLARANG..
AKSI NYATA NARKOBA ATAU OBAT TERLARANG..AKSI NYATA NARKOBA ATAU OBAT TERLARANG..
AKSI NYATA NARKOBA ATAU OBAT TERLARANG..ikayogakinasih12
 
Paparan Refleksi Lokakarya program sekolah penggerak.pptx
Paparan Refleksi Lokakarya program sekolah penggerak.pptxPaparan Refleksi Lokakarya program sekolah penggerak.pptx
Paparan Refleksi Lokakarya program sekolah penggerak.pptxIgitNuryana13
 
REFLEKSI MANDIRI_Prakarsa Perubahan BAGJA Modul 1.3.pdf
REFLEKSI MANDIRI_Prakarsa Perubahan BAGJA Modul 1.3.pdfREFLEKSI MANDIRI_Prakarsa Perubahan BAGJA Modul 1.3.pdf
REFLEKSI MANDIRI_Prakarsa Perubahan BAGJA Modul 1.3.pdfirwanabidin08
 
Materi Pertemuan Materi Pertemuan 7.pptx
Materi Pertemuan Materi Pertemuan 7.pptxMateri Pertemuan Materi Pertemuan 7.pptx
Materi Pertemuan Materi Pertemuan 7.pptxRezaWahyuni6
 
JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5
JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5
JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5ssuserd52993
 
PEMANASAN GLOBAL - MATERI KELAS X MA.pptx
PEMANASAN GLOBAL - MATERI KELAS X MA.pptxPEMANASAN GLOBAL - MATERI KELAS X MA.pptx
PEMANASAN GLOBAL - MATERI KELAS X MA.pptxsukmakarim1998
 
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...Kanaidi ken
 
Perumusan Visi dan Prakarsa Perubahan.pptx
Perumusan Visi dan Prakarsa Perubahan.pptxPerumusan Visi dan Prakarsa Perubahan.pptx
Perumusan Visi dan Prakarsa Perubahan.pptxadimulianta1
 
PPT AKSI NYATA KOMUNITAS BELAJAR .ppt di SD
PPT AKSI NYATA KOMUNITAS BELAJAR .ppt di SDPPT AKSI NYATA KOMUNITAS BELAJAR .ppt di SD
PPT AKSI NYATA KOMUNITAS BELAJAR .ppt di SDNurainiNuraini25
 
Dampak Pendudukan Jepang.pptx indonesia1
Dampak Pendudukan Jepang.pptx indonesia1Dampak Pendudukan Jepang.pptx indonesia1
Dampak Pendudukan Jepang.pptx indonesia1udin100
 
PELAKSANAAN + Link2 Materi TRAINING "Effective SUPERVISORY & LEADERSHIP Sk...
PELAKSANAAN  + Link2 Materi TRAINING "Effective  SUPERVISORY &  LEADERSHIP Sk...PELAKSANAAN  + Link2 Materi TRAINING "Effective  SUPERVISORY &  LEADERSHIP Sk...
PELAKSANAAN + Link2 Materi TRAINING "Effective SUPERVISORY & LEADERSHIP Sk...Kanaidi ken
 
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptxBab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptxssuser35630b
 
PERAN PERAWAT DALAM PEMERIKSAAN PENUNJANG.pptx
PERAN PERAWAT DALAM PEMERIKSAAN PENUNJANG.pptxPERAN PERAWAT DALAM PEMERIKSAAN PENUNJANG.pptx
PERAN PERAWAT DALAM PEMERIKSAAN PENUNJANG.pptxRizkyPratiwi19
 
MODUL AJAR MATEMATIKA KELAS 6 KURIKULUM MERDEKA
MODUL AJAR MATEMATIKA KELAS 6 KURIKULUM MERDEKAMODUL AJAR MATEMATIKA KELAS 6 KURIKULUM MERDEKA
MODUL AJAR MATEMATIKA KELAS 6 KURIKULUM MERDEKAAndiCoc
 
Refleksi Mandiri Modul 1.3 - KANVAS BAGJA.pptx.pptx
Refleksi Mandiri Modul 1.3 - KANVAS BAGJA.pptx.pptxRefleksi Mandiri Modul 1.3 - KANVAS BAGJA.pptx.pptx
Refleksi Mandiri Modul 1.3 - KANVAS BAGJA.pptx.pptxIrfanAudah1
 
Tugas 1 ABK di SD prodi pendidikan guru sekolah dasar.docx
Tugas 1 ABK di SD prodi pendidikan guru sekolah dasar.docxTugas 1 ABK di SD prodi pendidikan guru sekolah dasar.docx
Tugas 1 ABK di SD prodi pendidikan guru sekolah dasar.docxmawan5982
 

Recently uploaded (20)

11 PPT Pancasila sebagai Paradigma Kehidupan dalam Masyarakat.pptx
11 PPT Pancasila sebagai Paradigma Kehidupan dalam Masyarakat.pptx11 PPT Pancasila sebagai Paradigma Kehidupan dalam Masyarakat.pptx
11 PPT Pancasila sebagai Paradigma Kehidupan dalam Masyarakat.pptx
 
soal AKM Mata Pelajaran PPKN kelas .pptx
soal AKM Mata Pelajaran PPKN kelas .pptxsoal AKM Mata Pelajaran PPKN kelas .pptx
soal AKM Mata Pelajaran PPKN kelas .pptx
 
Sesi 1_PPT Ruang Kolaborasi Modul 1.3 _ ke 1_PGP Angkatan 10.pptx
Sesi 1_PPT Ruang Kolaborasi Modul 1.3 _ ke 1_PGP Angkatan 10.pptxSesi 1_PPT Ruang Kolaborasi Modul 1.3 _ ke 1_PGP Angkatan 10.pptx
Sesi 1_PPT Ruang Kolaborasi Modul 1.3 _ ke 1_PGP Angkatan 10.pptx
 
Materi Strategi Perubahan dibuat oleh kelompok 5
Materi Strategi Perubahan dibuat oleh kelompok 5Materi Strategi Perubahan dibuat oleh kelompok 5
Materi Strategi Perubahan dibuat oleh kelompok 5
 
AKSI NYATA NARKOBA ATAU OBAT TERLARANG..
AKSI NYATA NARKOBA ATAU OBAT TERLARANG..AKSI NYATA NARKOBA ATAU OBAT TERLARANG..
AKSI NYATA NARKOBA ATAU OBAT TERLARANG..
 
Paparan Refleksi Lokakarya program sekolah penggerak.pptx
Paparan Refleksi Lokakarya program sekolah penggerak.pptxPaparan Refleksi Lokakarya program sekolah penggerak.pptx
Paparan Refleksi Lokakarya program sekolah penggerak.pptx
 
REFLEKSI MANDIRI_Prakarsa Perubahan BAGJA Modul 1.3.pdf
REFLEKSI MANDIRI_Prakarsa Perubahan BAGJA Modul 1.3.pdfREFLEKSI MANDIRI_Prakarsa Perubahan BAGJA Modul 1.3.pdf
REFLEKSI MANDIRI_Prakarsa Perubahan BAGJA Modul 1.3.pdf
 
Materi Pertemuan Materi Pertemuan 7.pptx
Materi Pertemuan Materi Pertemuan 7.pptxMateri Pertemuan Materi Pertemuan 7.pptx
Materi Pertemuan Materi Pertemuan 7.pptx
 
JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5
JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5
JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5
 
PEMANASAN GLOBAL - MATERI KELAS X MA.pptx
PEMANASAN GLOBAL - MATERI KELAS X MA.pptxPEMANASAN GLOBAL - MATERI KELAS X MA.pptx
PEMANASAN GLOBAL - MATERI KELAS X MA.pptx
 
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...
 
Perumusan Visi dan Prakarsa Perubahan.pptx
Perumusan Visi dan Prakarsa Perubahan.pptxPerumusan Visi dan Prakarsa Perubahan.pptx
Perumusan Visi dan Prakarsa Perubahan.pptx
 
PPT AKSI NYATA KOMUNITAS BELAJAR .ppt di SD
PPT AKSI NYATA KOMUNITAS BELAJAR .ppt di SDPPT AKSI NYATA KOMUNITAS BELAJAR .ppt di SD
PPT AKSI NYATA KOMUNITAS BELAJAR .ppt di SD
 
Dampak Pendudukan Jepang.pptx indonesia1
Dampak Pendudukan Jepang.pptx indonesia1Dampak Pendudukan Jepang.pptx indonesia1
Dampak Pendudukan Jepang.pptx indonesia1
 
PELAKSANAAN + Link2 Materi TRAINING "Effective SUPERVISORY & LEADERSHIP Sk...
PELAKSANAAN  + Link2 Materi TRAINING "Effective  SUPERVISORY &  LEADERSHIP Sk...PELAKSANAAN  + Link2 Materi TRAINING "Effective  SUPERVISORY &  LEADERSHIP Sk...
PELAKSANAAN + Link2 Materi TRAINING "Effective SUPERVISORY & LEADERSHIP Sk...
 
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptxBab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
 
PERAN PERAWAT DALAM PEMERIKSAAN PENUNJANG.pptx
PERAN PERAWAT DALAM PEMERIKSAAN PENUNJANG.pptxPERAN PERAWAT DALAM PEMERIKSAAN PENUNJANG.pptx
PERAN PERAWAT DALAM PEMERIKSAAN PENUNJANG.pptx
 
MODUL AJAR MATEMATIKA KELAS 6 KURIKULUM MERDEKA
MODUL AJAR MATEMATIKA KELAS 6 KURIKULUM MERDEKAMODUL AJAR MATEMATIKA KELAS 6 KURIKULUM MERDEKA
MODUL AJAR MATEMATIKA KELAS 6 KURIKULUM MERDEKA
 
Refleksi Mandiri Modul 1.3 - KANVAS BAGJA.pptx.pptx
Refleksi Mandiri Modul 1.3 - KANVAS BAGJA.pptx.pptxRefleksi Mandiri Modul 1.3 - KANVAS BAGJA.pptx.pptx
Refleksi Mandiri Modul 1.3 - KANVAS BAGJA.pptx.pptx
 
Tugas 1 ABK di SD prodi pendidikan guru sekolah dasar.docx
Tugas 1 ABK di SD prodi pendidikan guru sekolah dasar.docxTugas 1 ABK di SD prodi pendidikan guru sekolah dasar.docx
Tugas 1 ABK di SD prodi pendidikan guru sekolah dasar.docx
 

Pertemuan 13 - Shared Preferences and Settings.pptx

  • 1. PEMROGRAMAN BERGERAK Shared Preferences and Settings (Preferensi dan Pengaturan Bersama) Riad Sahara, S.SI., M.T. Universitas Siber Asia Program Studi: PJJ Informatika S1 Modul Ke: 13
  • 2. 2 9.0 Penyimpanan Data (Data Storage)
  • 3. 3 Isi • Sistem File Android • Penyimpanan Internal • Penyimpanan Eksternal • SQLite Database • Opsi Penyimpanan Lainnya
  • 5. 5 Menyimpan data (Storing data) ● Shared Preferences—Data primitif privat dalam pasangan nilai kunci ● Internal Storage—Data pribadi pada memori perangkat ● External Storage—Data publik di perangkat atau penyimpanan eksternal ● SQLite Databases—Data terstruktur dalam database pribadi ● Content Providers—Simpan secara pribadi dan sediakan untuk umum
  • 6. 6 Storing data beyond Android ●Network Connection—Di web dengan server Anda sendiri ●Cloud Backup—Mencadangkan aplikasi dan data pengguna di cloud ●Firebase Realtime Database—Simpan dan sinkronkan data dengan database cloud NoSQL di seluruh klien secara realtime.
  • 8. 8 Android File System ●Penyimpanan eksternal -- Direktori publik ●Penyimpanan internal -- Direktori pribadi hanya untuk aplikasi Anda ●Aplikasi dapat menelusuri struktur direktori ●Struktur dan operasi mirip dengan Linux dan java.io
  • 9. 9 Internal storage ●Selalu tersedia ●Menggunakan sistem file perangkat ●Hanya aplikasi Anda yang dapat mengakses file, kecuali secara eksplisit disetel agar dapat dibaca atau ditulis ●Saat aplikasi dicopot pemasangannya, sistem akan menghapus semua file aplikasi dari penyimpanan internal
  • 10. 10 Penyimpanan eksternal (External storage) ●Tidak selalu tersedia, dapat dihapus ●Menggunakan sistem file perangkat atau penyimpanan eksternal fisik seperti kartu SD ●Dapat dibaca dunia, sehingga aplikasi apa pun dapat membaca ●Saat uninstall, sistem tidak menghapus file pribadi ke aplikasi
  • 11. 11 Kapan menggunakan penyimpananinternal/eksternal? Internal adalah yang terbaik ketika ●Anda ingin memastikan bahwa baik pengguna maupun aplikasi lain tidak dapat mengakses file Anda Eksternal adalah yang terbaik untuk file yang ●Tidak memerlukan pembatasan akses dan untuk ●Anda ingin berbagi dengan aplikasi lain ●Anda mengizinkan pengguna untuk mengakses dengan komputer
  • 12. 12 Menyimpan file pengguna di penyimpanan bersama ●Simpan file baru yang diperoleh pengguna melalui aplikasi Anda ke direktori publik tempat aplikasi lain dapat mengaksesnya dan pengguna dapat dengan mudah menyalinnya dari perangkat. ●Menyimpan file eksternal di direktori public.
  • 14. 14 Penyimpanan Internal (Internal Storage) ●Menggunakan direktori pribadi hanya untuk aplikasi Anda ●Aplikasi selalu memiliki izin untuk membaca / menulis ●Direktori penyimpanan permanen—getFilesDir() ●Direktori penyimpanan sementara—getCacheDir()
  • 15. 15 Membuat file File file = new File( context.getFilesDir(), filename); Gunakan sta.ndar java.io Operator atau aliran file untuk berinteraksi dengan file
  • 17. 17 External Storage ●Pada perangkat atau kartu SD ●Menyetel izin di Manifes Android ○Izin menulis mencakup izin baca <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
  • 18. 18 Selalu periksa ketersediaan penyimpanan public boolean isExternalStorageWritable() { String state = Environment.getExternalStorageState(); if (Environment.MEDIA_MOUNTED.equals(state)) { return true; } return false; }
  • 19. 19 Contoh external public directories • DIRECTORY_ALARMS and DIRECTORY_RINGTONES Untuk file audio untuk digunakan sebagai alarm dan nada dering • DIRECTORY_DOCUMENTS Untuk dokumen yang telah dibuat oleh pengguna  DIRECTORY_DOWNLOADS Untuk file yang telah diunduh oleh pengguna developer.android.com/reference/android/os/Environment.html
  • 20. 20 Mengakses direktori eksternal publik • Dapatkan jalur getExternalStoragePublicDirectory() • Buat file File path = Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_PICTURES); File file = new File(path, "DemoPicture.jpg");
  • 21. 21 Berapa banyak penyimpanan yang tersisa? ●Jika tidak ada cukup ruang, gunakan IOException ●Jika Anda mengetahui ukuran file, periksa ruang ○ getFreeSpace() ○ getTotalSpace(). ●Jika Anda tidak tahu berapa banyak ruang dibutuhkan ○ try/catch IOException
  • 22. 22 Menghapus file tidak lagi diperlukan ●Penyimpanan eksternal myFile.delete(); ●Penyimpanan internal myContext.deleteFile(fileName);
  • 23. 23 Jangan hapus file pengguna! Saat pengguna meng-uninstal aplikasi Anda, direktori penyimpanan pribadi aplikasi dan semua kontennya akan dihapus Jangan gunakan penyimpanan pribadi untuk konten milik pengguna! Misalnya: Foto yang diambil atau diedit dengan aplikasi Anda ●Musik yang telah dibeli pengguna dengan aplikasi Anda
  • 24. 24 Preferensi Bersama & SQLite Database
  • 25. 25 SQLite Database ●Ideal untuk data berulang atau terstruktur, seperti kontak ●Android menyediakan database seperti SQL ●Tercakup dalam bab-bab berikut dan praktiknya ○SQLite Primer ○Pengantar SQLite Database ○SQLite Data Storage Praktis ○Mencari Database SQLite Praktis
  • 26. 26 Preferensi Bersama (Shared Preferences) ●Membaca dan menulis sejumlah kecil data primitif sebagai pasangan kunci/nilai ke file di penyimpanan perangkat ●Dibahas dalam bab selanjutnya dan praktis ○Preferensi Bersama
  • 28. 28 Menggunakan Firebase untuk menyimpan dan berbagi data Menyimpan dan menyinkronkan data dengan database cloud Firebase Data disinkronkan di semua klien, dan tetap tersedia saat aplikasi Anda offline firebase.google.com/docs/database/
  • 29. 29 Firebase Realtime Database ●Aplikasi yang terhubung berbagi data ●Dihosting di cloud ●Data disimpan sebagai JSON ●Data disinkronkan secara realtime ke setiap klien yang terhubung
  • 30. 30 Koneksi Jaringan (Network Connection) ●Anda dapat menggunakan jaringan (bila tersedia) untuk menyimpan dan mengambil data pada layanan berbasis web Anda sendiri ●Gunakan kelas dalam paket berikut ○java.net.* ○android.net.*
  • 31. 31 Backing up data ●Auto Backup untuk 6.0 (API level 23) dan yang lebih tinggi ●Mencadangkan data aplikasi ke cloud secara otomatis ●Tidak perlu kode dan gratis ●Menyesuaikan dan mengonfigurasi pencadangan otomatis untuk aplikasi Anda ●Lihat Configuring Auto Backup for Apps
  • 32. 32 Backup API untuk Android 5.1 (API level 22) • Daftar ke Android Backup Service untuk mendapatkan Backup Service Key • Mengonfigurasi Manifes untuk menggunakan Layanan Pencadangan • Membuat agen cadangan dengan memperluas kelas BackupAgentHelper • Meminta pencadangan saat data telah berubah • More info and sample code: Using the Backup AP dan Data Backup
  • 33. 33 Pelajari file lebih lanjut ● Menyimpan File ● dokumentasi getExternalFilesDir() dan sampel kode ● getExternalStoragePublicDirectory() dokumentasi dan sampel kode ● kelas java.io.File ● Oracle Java I / O Tutorial
  • 34. 34 Pelajari selengkapnya tentang pencadangan ●Mengonfigurasi Pencadangan Otomatis untuk Aplikasi ●Menggunakan API Cadangan ●Pencadangan Data
  • 36. 36 Isi • Preferensi Bersama • Mendengarkan perubahan
  • 37. 37 Apa itu Preferensi Bersama? ●Membaca dan menulis sejumlah kecil data primitif sebagai pasangan kunci/nilai ke file di penyimpanan perangkat ●Kelas SharedPreference menyediakan API untuk membaca, menulis, dan mengelola data ini ●Simpan data di onPause() pulihkan di onCreate()
  • 38. 38 Preferensi Bersama DAN Status Instans Tersimpan (Shared Preferences AND Stored Instance State) • Sejumlah kecil pasangan kunci/nilai • Data bersifat pribadi untuk aplikasi
  • 39. 39 Shared Preferences vs. Saved Instance State (Preferensi Bersama vs. Status Instans Tersimpan) • Mempertahankan data di seluruh sesi pengguna, meskipun aplikasi dihentikan dan dimulai ulang, atau perangkat di- boot ulang • Data yang harus diingat di seluruh sesi, seperti setelan pilihan pengguna atau skor game mereka • Penggunaan umum adalah untuk menyimpan preferensi pengguna • Mempertahankan data status di seluruh instans aktivitas dalam sesi pengguna yang sama • Data yang tidak boleh diingat di seluruh sesi, seperti tab yang saat ini dipilih atau status aktivitas saat ini. • Penggunaan umum adalah untuk membuat ulang status setelah perangkat diputar •
  • 40. 40 Membuat Preferensi Bersama ●Hanya perlu satu file Preferensi Bersama per aplikasi ●Beri nama dengan nama paket aplikasi Anda—unik dan mudah dikaitkan dengan aplikasi ●Argumen MODE untuk getSharedPreferences() adalah untuk kompatibilitas mundur—gunakan hanya MODE_PRIVATE agar aman
  • 41. 41 getSharedPreferences() private String sharedPrefFile = "com.example.android.hellosharedprefs"; mPreferences = getSharedPreferences(sharedPrefFile, MODE_PRIVATE);
  • 42. 42 Menyimpan preferensi bersama (Saving Shared Preferences) ●SharedPreferences.Editor interface ●Menangani semua operasi file ●metode put menimpa jika ada kunci ●apply() menyimpan secara asinkron dan aman
  • 43. 43 SharedPreferences.Editor @Override protected void onPause() { super.onPause(); SharedPreferences.Editor preferencesEditor = mPreferences.edit(); preferencesEditor.putInt("count", mCount); preferencesEditor.putInt("color", mCurrentColor); preferencesEditor.apply(); }
  • 44. 44 Restoring Shared Preferences (Memulihkanpreferensi bersama) ●Memulihkan di onCreate() dalam Aktivitas ●Metode get mengambil dua argumen—kunci, dan nilai default jika kunci tidak dapat ditemukan. ●Gunakan argumen default sehingga Anda tidak perlu menguji apakah preferensi ada dalam file.
  • 45. 45 Getting data in onCreate() mPreferences = getSharedPreferences(sharedPrefFile, MODE_PRIVATE); if (savedInstanceState != null) { mCount = mPreferences.getInt("count", 1); mShowCount.setText(String.format("%s", mCount)); mCurrentColor = mPreferences.getInt("color", mCurrentColor); mShowCount.setBackgroundColor(mCurrentColor); mNewText = mPreferences.getString("text", ""); } else { … }
  • 46. 46 Clearing ●Call clear() on the SharedPreferences.Editor dan menerapkan perubahan ●Anda dapat menggabungkan panggilan untuk put dan clear. Namun, ketika Anda Apply (), clear () selalu dilakukan terlebih dahulu, terlepas dari urutannya!
  • 49. 49 Listening to changes ●Terapkan antarmuka SharedPreference.OnSharedPreferenceChangeListener ●Daftar listener dengan registerOnSharedPreferenceChangeListener() ●Mendaftarkan dan membatalkan pendaftaran pendengar di onResume() and onPause() ●Terapkan pada callback onSharedPreferenceChanged()
  • 50. 50 Antarmuka dan panggilan balik (Interface and callback) public class SettingsActivity extends AppCompatActivity implements OnSharedPreferenceChangeListener { ... public void onSharedPreferenceChanged( SharedPreferences sharedPreferences, String key) { if (key.equals(MY_KEY)) { // Do something } } }
  • 51. 51 Creating and registering listener SharedPreferences.OnSharedPreferenceChangeListener listener = new SharedPreferences.OnSharedPreferenceChangeListener() { public void onSharedPreferenceChanged( SharedPreferences prefs, String key) { // Implement listener here } }; prefs.registerOnSharedPreferenceChangeListener(listener);
  • 52. 52 Anda membutuhkan referensi KUAT untuk pendengar ●Saat mendaftarkan pendengar, manajer preferensi tidak menyimpan referensi yang kuat kepada pendengar ●Anda harus menyimpan referensi yang kuat kepada pendengar, atau akan rentan terhadap pengumpulan sampah ●Simpan referensi ke listener dalam data instance dari objek yang akan ada selama Anda membutuhkan listener
  • 53. 53 Practical: HelloSharedPrefs ●Menambahkan Preferensi Bersama ke app pemula ●Tambahkan tombol "Reset" yang menghapus status aplikasi dan preferensi untuk aplikasi
  • 54. 54 Pelajari lebih lanjut ● Menyimpan Data ● Opsi Penyimpanan ● Menyimpan Set Kunci-Nilai ● Preferensi Bersama ● SharedPreferences.Editor Stackoverflow ● How to use SharedPreferences in Android to store, fetch and edit values ● onSavedInstanceState vs. SharedPreferences
  • 55. 55 9.2 Pengaturan aplikasi (Application settings)
  • 56. 56 Isi ●Apa itu pengaturan? ●Layar pengaturan ●Menerapkan pengaturan ●Pengaturan default ●Simpan dan ambil pengaturan ●Merespons perubahan dalam pengaturan ●Ringkasan untuk pengaturan ●Template Aktivitas Pengaturan
  • 58. 58 Apa itu app settings? ●Pengguna dapat mengatur fitur dan perilaku aplikasi Contoh: ○Lokasi rumah, unit pengukuran default ○Perilaku notifikasi untuk aplikasi tertentu ●Untuk nilai yang jarang berubah dan relevan bagi sebagian besar pengguna ●Jika nilai sering berubah, gunakan menu opsi atau laci navigasi
  • 60. 60 Mengakses pengaturan Pengguna mengakses pengaturan melalui: • Laci navigasi • Menu opsi
  • 62. 62 Mengatur pengaturan Anda ●Jumlah opsi yang dapat diprediksi dan dikelola ●7 atau kurang: atur sesuai prioritas dengan yang paling penting di atas ●Pengaturan 7-15: Kelompokkan pengaturan terkait di bawah Pembagi Bagian
  • 63. 63 16+ Settings ●Kelompokkan ke dalam layar yang dibuka dari layar Pengaturan utama
  • 64. 64 Lihat versus Preferensi ●Gunakan objek Preferensi alih-alih Lihat objek di layar Pengaturan Anda ●Mendesain dan mengedit objek Preferensi di editor tata letak seperti yang Anda lakukan untuk Lihat objek
  • 65. 65 Tentukan Pengaturan di Layar Preferensi(Specify Settings on the Preferences Screen) ●Menentukan pengaturan di layar preferensi ●Ini seperti tata letak ●Definisikan dalam: res > xml > preferences.xml
  • 66. 66 Preference Screen example <PreferenceScreen> <PreferenceCategory android:title="Flight Preferences"> <CheckBoxPreference android:title="Wake for meals" ... /> <EditTextPreference android:title="Favorite city" .../> </PreferenceCategory> </PreferenceScreen>
  • 67. 67 Setiap Preferensi harus memiliki kunci ●Setiap preferensi harus memiliki kunci ●Android menggunakan kunci untuk menyimpan nilai setelan ●<EditTextPreference android:title="Favorite city" android:key="fav_city" … />
  • 69. 69 Switch Preference attributes ●android:defaultValue—true secara default ●android:summary—teks di bawah setelan, untuk beberapa setelan, harus berubah untuk mencerminkan nilai ●android:title—judul/nama ●android:key—key untuk menyimpan nilai di SharedPreferences
  • 72. 72 ListPreference ●Nilai default -1 tanpa pilihan ●android:entries—Array label untuk tombol radio ●android:entryValues —Tombol radio array nilai
  • 73. 73 Preference class ●Preference class menyediakan View untuk setiap jenis pengaturan ●asosiasi Lihat dengan SharedPreferences antarmuka untuk menyimpan / mengambil data preferensi ●Menggunakan kunci dalam Preferensi untuk menyimpan nilai pengaturan
  • 74. 74 Subclass Preferece ●CheckBoxPreference—item daftar yang memperlihatkan kotak centang ●ListPreference—Membuka dialog dengan daftar tombol radio ●SwitchPreference—Opsi toggleable dua status ●EditTextPreference—yang membuka dialog dengan EditText ●RingtonePreference—memungkinkan pengguna untuk memilih nada dering
  • 75. 75 Kelas untuk pengelompokan (Classes for grouping) ●PreferenceScreen ○akar hierarki tata letak Preferensi ○di bagian atas setiap layar pengaturan ●PreferenceGroup ○Untuk grup pengaturan (Preference objects). ●PreferenceCategory ○judul di atas grup sebagai pemisah bagian
  • 77. 77 UI Pengaturan menggunakan fragmen ●Menggunakan Aktivitas dengan Fragmen untuk menampilkan layar Pengaturan ●Gunakan subclass Activity dan Fragment khusus yang menangani pekerjaan menyimpan setelan
  • 78. 78 Aktivitas dan fragmen untuk setelan ●Android 3.0 dan yang lebih baru: ○AppCompatActivity dengan PreferenceFragmentCompat ○Atau gunakan Activity dengan PreferenceFragment ●Android lebih lama dari 3.0 (API level 10 dan lebih rendah): ○buat aktivitas pengaturan khusus sebagai ekstensi dari kelas PreferenceActivity (gunakan template!) Pelajaran berfokus pada hal ini!
  • 79. 79 Langkah-langkah untuk menerapkan Pengaturan Untuk AppCompatActivity dengan PreferenceFragmentCompat: ●Membuat layar preferensi ●Membuat Aktivitas untuk pengaturan ●Membuat Fragmen untuk setelan ●Menambahkan preferenceTheme ke AppTheme ●Menambahkan kode untuk memanggil UI Pengaturan
  • 80. 80 Template Aktivitas Dasar ● Template Aktivitas Dasar Termasuk menu opsi ● Settings Item menu disediakan untuk menu opsi
  • 81. 81 Membuat subkelas Aktivitas Setelan ●Memperluas AppCompatActivity ●di onCreate() menampilkan Fragmen pengaturan: getSupportFragmentManager() .beginTransaction() .replace(android.R.id.content, new MySettingsFragment()) .commit();
  • 82. 82 Contoh Aktivitas Pengaturan public class MySettingsActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getSupportFragmentManager().beginTransaction() .replace(android.R.id.content, new MySettingsFragment()) .commit(); } } This is the whole class!
  • 83. 83 Membuat subclass Fragmen Setelan ●Extends PreferenceFragmentCompat ●Implementasi Metode: ○ onCreatePreferences() menampilkan pengaturan ○ setOnPreferenceChangeListener() menangani perubahan apa pun yang perlu terjadi saat pengguna mengubah preferensi (opsional)
  • 84. 84 PreferenceFragment public class MySettingsFragment extends PreferenceFragmentCompat { …} ●Fragmen kosong menyertakan onCreateView() secara default ●Ganti onCreateView() dengan onCreatePreferences() karena fragmen ini menampilkan layar preferensi
  • 85. 85 Contoh Fragmen Pengaturan public class MySettingsFragment extends PreferenceFragmentCompat { @Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { setPreferencesFromResource(R.xml.preferences, rootKey); } }
  • 86. 86 Tambahkan PreferenceTheme ke tema aplikasi Jika menggunakan PreferenceFragmentCompat, atur preferenceTheme di styles.xml: <style name="AppTheme" parent="..."> ... <item name="preferenceTheme"> @style/PreferenceThemeOverlay </item> … </style>
  • 87. 87 Memanggil UI Pengaturan Kirim Intent untuk memulai Aktivitas Pengaturan: ●Dari menu Opsi, perbarui pada OptionItemsSelected() ●Dari laci Navigasi, perbarui onItemClick() pada OnItemClickListener diberikan kepada setOnItemClickListener
  • 89. 89 Default settings ●Atur default ke nilai yang akan dipilih sebagian besar pengguna ○ Semua kontak ●Gunakan lebih sedikit daya baterai o Bluetooth nonaktif hingga pengguna mengaktifkannya ●Risiko paling kecil terhadap keamanan dan kehilangan data o Mengarsipkan daripada menghapus pesan ●Interupsi hanya jika penting o Saat panggilan dan pemberitahuan masuk
  • 90. 90 Menetapkan nilai default (Set Default Value) ●Use android:defaultValue in Preference view in xml: <EditTextPreference android:defaultValue="London" … /> ●In onCreate() of MainActivity, save default values.
  • 91. 91 Menyimpan nilai default di preferensi bersama In onCreate() of MainActivity PreferenceManager.setDefaultValues( this, R.xml.preferences, false); ●App context, seperti ini ●ID sumber daya file sumber daya XML dengan pengaturan ●Metode false only calls saat pertama kali aplikasi dimulai
  • 92. 92 Simpan dan ambil pengaturan (Save and retrieve settings)
  • 93. 93 Menyimpan nilai pengaturan ●Tidak perlu menulis kode untuk menyimpan pengaturan! ●Jika Anda menggunakan Aktivitas Preferensi dan Fragmen khusus, Android akan otomatis menyimpan nilai setelan di preferensi bersama
  • 94. 94 Mendapatkan pengaturan dari preferensi bersama ●Di kode Anda, dapatkan setelan dari preferensi bersama default ●Gunakan kunci seperti yang ditentukan dalam tampilan preferensi dalam xml ●SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this); String destinationPref = sharedPref.getString("fav_city", "Jamaica");
  • 95. 95 Mendapatkan nilai pengaturan dari preferensi bersama ●In preference definition in xml: <EditTextPreference android:defaultValue="London" android:key="fav_city" /> ●In code, get fav_city setting: String destinationPref = sharedPref.getString("fav_city", "Jamaica"); Nilai pengaturan default berbeda dari nilai default dikembalikan oleh pref.getString() jika kunci tidak ditemukan di prefs bersama
  • 96. 96 Merespons perubahan dalam pengaturan (Respond to changes in settings)
  • 97. 97 Mendengarkan perubahan (Listen for chang) ●Menampilkan pengaturan tindak lanjut terkait ●Menonaktifkan atau mengaktifkan pengaturan terkait ●Mengubah ringkasan untuk mencerminkan pilihan saat ini ●Bertindak berdasarkan pengaturan ●Misalnya, jika pengaturan mengubah latar belakang layar, maka ubah latar belakang
  • 98. 98 Mendengarkan perubahan pada pengaturan (Listen for changes to settings) ●Define setOnPreferenceChangeListener() ●in onCreatePreferences() in the Settings Fragment
  • 99. 99 onCreatePreferences() example @Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { setPreferencesFromResource(R.xml.preferences, rootKey); ListPreference colorPref = (ListPreference) findPreference("color_pref"); colorPref.setOnPreferenceChangeListener( // see next slide // ...); }
  • 100. 100 onPreferenceChangeListener() example Contoh: Mengubah warna latar belakang saat mengatur perubahan colorPref.setOnPreferenceChangeListener( new Preference.OnPreferenceChangeListener(){ @Override public boolean onPreferenceChange( Preference preference, Object newValue){ setMyBackgroundColor(newValue); return true; } });
  • 102. 102 Ringkasan untuk nilai true/false Mengatur atribut untuk menentukan ringkasan bersyarat untuk preferensi yang memiliki nilai true/false.
  • 103. 103 Ringkasan untuk pengaturan lain Untuk pengaturan yang memiliki nilai selain true/false, perbarui ringkasan saat nilai pengaturan berubah Mengatur ringkasan di onPreferenceChangeListener()
  • 104. 104 Set summary example EditTextPreference cityPref = (EditTextPreference) findPreference("fav_city"); cityPref.setOnPreferenceChangeListener( new Preference.OnPreferenceChangeListener(){ @Override public boolean onPreferenceChange(Preference pref, Object value){ String city = value.toString(); pref.setSummary("Your favorite city is " + city); return true; } });
  • 106. 106 Lebih kompleks? Untuk sesuatu yang lebih kompleks ? gunakan template Aktivitas Pengaturan!
  • 107. 107 Template Aktivitas Pengaturan (Setting Activity Template) ● Pengaturan Kompleks ● Kompatibilitas mundur ● Menyesuaikan setelan yang telah diisi sebelumnya ● Tata letak adaptif untuk ponsel dan tablet Tablet Phone
  • 109. 109 Pelajari lebih lanjut ●Panduan Pengguna Android Studio ●Pengaturan (pengkodean) ●Kelas preferensi ●PreferenceFragment ●Fragmen ●Preferensi Bersama ●Menyimpan Set Kunci-Nilai ●Pengaturan (desain)
  • 110. Referensi 1. Google, D. (2021, 09 24). Dasar-Dasar Developer Android. Retrieved from Google Developers: https://developers.google.com/training/courses/android-fundamentals?hl=id