Membuat proyek baru berdasarkan template Basic Activity (yang menyediakan menu opsi).
Menambahkan setelan tombol alih dengan atribut di file XML preferensi.
Menambahkan aktivitas untuk setelan dan fragmen untuk setelan khusus. akan menggunakan versi PreferenceFragmentCompatPreferenceFragment untuk mempertahankan kompatibilitas dengan AppCompatActivity. Anda juga akan menambahkan pustaka android.support:preference-v7.
Menghubungkan item Settings di menu opsi ke aktivitas setelan.
1.1 Create the project and add the xml directory and resource file
Di Android Studio, buatlah proyek baru dengan parameter berikut:
Atribut
Nilai
Application Name
AppWithSettings
Company Name
android.example.com (atau domain Anda sendiri)
Phone and Tablet Minimum SDK
API15: Android 4.0.3 IceCreamSandwich
Use a Fragment?
Jangan dicentang
Template
Basic Activity
2. Jalankan aplikasi dan ketuk ikon luapan di bilah aplikasi untuk melihat menu opsi, seperti yang ditampilkan dalam gambar di bawah ini. Satu-satunya item di menu opsi adalah Settings.
3. Buat direktori sumber daya baru untuk menampung file XML yang berisi setelan:
Pilih direktori res di tampilan Project: Android, dan pilih File > New > Android Resource Directory. Dialog New Resource Directory akan muncul.
Di menu tarik-turun tipe Resource, pilih xml. Nama Direktori otomatis berubah menjadi xml.
Klik OK.
4. Direktori xml muncul di tampilan Project: Android di dalam direktori res. Pilih direktori xml dan pilih File > New > XML resource file(atau klik kanan direktori xml dan pilih New > XML resource file).
5. Masukkan nama file XML, preferences, di bidang nama File dan klik OK. File preferences.xml muncul di dalam direktori xml dan editor layout muncul,
1.2 Add the XML preference and attributes for the setting
Seret SwitchPreference dari panel Palette di sebelah kiri ke atas layout
2. Ubah nilai di panel Properties di sebelah kanan editor layout seperti berikut (lihat gambar di bawah):
defaultValue: true
key:example_switch
title: Settings option
summary: Turn this option on or off
android:defaultValue: Nilai default setelan saat aplikasi dimulai pertama kali.
android:title: Judul setelan. Untuk SwitchPreference, judul muncul di sebelah kiri tombol alih.
android:key: Kunci yang digunakan untuk menyimpan nilai setelan. Setiap setelan memiliki pasangan nilai-kunci yang sesuai yang digunakan sistem untuk menyimpan setelan dalam file SharedPreferences default untuk setelan aplikasi Anda.
android:summary: Rangkuman teks muncul di bawah setelan.
Klik tab Text di bawah editor layout untuk mengedit kode XML:
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<SwitchPreference
android:defaultValue="true"
android:title="Settings option"
android:key="example_switch"
android:summary="Turn this option on or off" />
</PreferenceScreen>
Nilai Properties yang Anda masukkan merepresentasikan atribut XML:
Ekstrak sumber daya string untuk nilai atribut android:title dan android:summary menjadi @string/switch_title dan @string/switch_summary.
Ubah <SwitchPreference dalam kode ke <android.support.v7.preference.SwitchPreferenceCompat:
3. Bukan file styles.xml dan tambahkan deklarasi preferenceThemeberikut ke AppTheme:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
...
<item name="preferenceTheme">@style/PreferenceThemeOverlay</item>
</style>
4. Buka file **build.gradle (Module: app), dan tambahkan yang berikut ini ke bagian dependencies:
1.3 Add an activity for settings and a fragment for a specific setting
Untuk membuat aktivitas Settings yang menyediakan UI untuk setelan, tambahkan Empty Activity ke aplikasi:
a. Pilih app di bagian atas Project: Android.
b. Pilih New > Activity > Empty Activity.
c. Beri nama aktivitas SettingsActivity.
d. Hapus centang opsi untuk menghasilkan file layout (Anda tidak memerlukannya).
e. Biarkan opsi Backwards Compatibility (AppCompat) dicentang.
f. Nama paket harus sudah disetel ke com.example.android.projectname, dan Target Source Set harus disetel ke main. Jika tidak, buat pilihan ini di menu tarik-turun.
g. Klik Finish.
Hasilnya adalah definisi kelas berikut di SettingsActivity:
public class SettingsActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
2. Tambahkan fragmen kosong untuk grup setelan yang sama (tanpalayout, metode bawaan, atau callback antarmuka) ke aplikasi, untuk menukarnya ke dalam layar aktivitas Settings jika diperlukan:
Pilih app di bagian atas tampilan Project: Android lagi.
Pilih New > Fragment > Fragment (Blank).
Beri nama fragmen SettingsFragment.
Hapus centang opsi untuk menghasilkan file layout (Anda tidak memerlukannya).
Hapus centang opsi untuk menyertakan metode bawaan fragmen.
Hapus centang opsi untuk menyertakan callback antarmuka.
Klik Finish.
Hasilnya adalah definisi kelas berikut di SettingsFragment:
public class SettingsFragment extends Fragment {
public SettingsFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
TextView textView = new TextView(getActivity());
textView.setText(R.string.hello_blank_fragment);
return textView;
}
}
-3. Ubah definisi kelas SettingsFragment untuk memperluas PreferenceFragmentCompat:
public class SettingsFragment extends PreferenceFragmentCompat {
...
}
Gunakan versi PreferenceFragmentCompat dari PreferenceFragment dengan aktivitas yang memperluas AppCompatActivity. Untuk memperluas fragmen, Anda mungkin harus menambahkan pernyataan import berikut:
4. Ganti seluruh metode onCreateView() di fragmen dengan metode onCreate() ini:
@Override
public void onCreatePreferences(Bundle savedInstanceState,
String rootKey) {
}
Anda bisa dengan aman membuang constructor kosong dari fragmen, karena fragmen tidak ditampilkan sendiri: public SettingsFragment() {
// Required empty public constructor
}
5. Di akhir metode onCreatePreferences() di SettingsFragment, Anda perlu mengaitkan sumber daya setelan preferences.xml yang baru saja Anda buat dengan fragmen ini. Tambahkan sebuah panggilan ke setPreferencesFromResource dengan meneruskan id file XML (R.xml.preferences)) dan rootKey untuk mengidentifikasi root preferensi di PreferenceScreen:
setPreferencesFromResource(R.xml.preferences, rootKey); Metode onCreatePreferences() sekarang harus terlihat seperti ini:
6. Tambahkan kode berikut ke akhir metode onCreate()SettingsActivity sehingga fragmen ditampilkan sebagai konten utama:
getSupportFragmentManager().beginTransaction()
.replace(android.R.id.content, new SettingsFragment())
.commit();
Kode di atas adalah pola umum yang digunakan untuk menambahkan fragmen ke sebuah aktivitas sehingga fragmen muncul sebagai konten utama aktivitas. Anda menggunakan:
getFragmentManager() jika kelas memperluas Activity dan fragmen memperluas PreferenceFragment.
getSupportFragmentManager() jika kelas memperluas AppCompatActivity dan fragmen memperluas PreferenceFragmentCompat.
Seluruh metode onCreate() di SettingsActivity sekarang harus terlihat seperti berikut:
1.4 Connect the Settings menu item to the settings activity
Gunakan intent untuk meluncurkan SettingsActivity dari MainActivity.
Temukan blok if di metode onOptionsItemSelected() di MainActivity yang menangani ketukan pada Settings di menu opsi:
if (id == R.id.action_settings) {
return true;
}
2. Tambahkan intent ke blok if untuk meluncurkan SettingsActivity:
if (id == R.id.action_settings) {
Intent intent = new Intent(this, SettingsActivity.class);
startActivity(intent);
return true;
}
3. Tambahkan navigasi tombol Up ke SettingsActivity dengan mengedit deklarasinya di file AndroidManifest.xml untuk mendefinisikan induk aktivitas sebagai MainActivity.
a. Temukan deklarasi SettingsActivity di AndroidManifest.xml:
<activity android:name=".SettingsActivity"></activity>
b.Ubah deklarasi menjadi yang berikut ini:
1.6 Read the changed settings value from shared preferences
Saat aplikasi dimulai, metode onCreate() MainActivity bisa membaca nilai setelan yang telah berubah, dan menggunakan nilai yang telah berubah, bukannya nilai default.
Ikuti langkah-langkah berikut untuk menambahkan kode tersebut:
Sebelum menambahkan kode untuk membaca nilai setelan, buat variabel string statis di SettingsActivity untuk menampung kunci untuk nilai:
public class SettingsActivity extends AppCompatActivity {
public static final String
KEY_PREF_EXAMPLE_SWITCH = "example_switch";
...
}
Di metode onCreate() di MainActivity, dan tambahkan yang berikut ini ke akhir metode:
PreferenceManager.getDefaultSharedPreferences(this) untuk mendapatkan setelan sebagai objek SharedPreferences (sharedPref).
getBoolean() untuk mendapatkan nilai Boolean setelan yang menggunakan kunci (KEY_PREF_EXAMPLE_SWITCH yang didefinisikan di SettingsActivity) dan menetapkannya ke switchPref. Jika tidak ada nilai untuk kunci, metode getBoolean() akan menyetel nilai setelan (switchPref) ke false. Untuk nilai lain seperti string, integer, dan bilangan titik mengambang, Anda bisa menggunakan metode getString(), getInt(), atau getFloat().
Tambahkan metode Toast.makeText() ke onCreate() yang menampilkan nilai setelan switchPref di sebuah toast:
Jalankan aplikasi, lalu ikuti langkah-langkah ini:
Ketuk Settings untuk melihat aktivitas setelan.
Ketuk setelan untuk mengubah tombol alih dari on ke off, seperti yang ditampilkan di sebelah kiri gambar di bawah.
Ketuk tombol Naik di aktivitas setelan untuk kembali ke aktivitas utama. Pesan toast akan muncul di aktivitas utama dengan nilai setelan, seperti yang ditampilkan di sebelah kanan gambar di bawah.
Ulangi langkah-langkah ini untuk melihat perubahan pesan toast ketika Anda mengubah setelan.
Task 2: Using the Settings Activity template
2.1 Explore the Settings Activity template
Untuk menyertakan template Settings Activity di proyek aplikasi Anda di Android Studio, ikuti langkah-langkah ini:
Salin folder proyek DroidCafe, ubah namanya menjadi DroidCafeWithSettings dan optimalkan kodenya. (Lihat Apendiksuntuk petunjuk menyalin proyek.) Jalankan aplikasi untuk memastikan berjalan lancar.
Pilih app di bagian atas tampilan Project: Android dan pilih New > Activity > Settings Activity.
Dalam dialog yang muncul, terima Activity Name (SettingsActivityadalah nama yang disarankan) dan Title (Settings).
Klik tiga titik di akhir bidang Hierarchical Parent dan pilih MainActivity sebagai aktivitas induk, sehingga tombol Naik di Settings Activity mengembalikan pengguna ke MainActivity. Memilih aktivitas induk otomatis memperbarui file AndroidManifest.xml untuk mendukung navigasi tombol Naik.
Klik Finish.
2.2 Add the Settings menu item and connect it to the activity
Edit file menu_main.xml untuk menambahkan item menu lainnya yang bernama Settings dengan id sumber daya baru action_settings:
Tetapkan "never" untuk atribut app:showAsAction sehingga Settings hanya muncul di menu opsi luapan, dan tidak di bilah aplikasi itu sendiri, karena tidak akan sering digunakan.
Tetapkan "50" untuk atribut android:orderInCategory sehingga Settings muncul di bawah Favorites (setel ke "40") tetapi di atas Contact (setel di atas "100").
Ekstrak sumber daya string untuk "Settings" di atribut android:title ke nama sumber daya settings.
Di MainActivity, temukan blok switch-case di metode onOptionsItemSelected() yang menangani ketukan pada item di menu opsi:
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_order:
displayToast(getString(R.string.action_order_message));
return true;
case R.id.action_status:
displayToast(getString(R.string.action_status_message));
return true;
case R.id.action_favorites:
displayToast(getString(R.string.action_favorites_message));
return true;
case R.id.action_contact:
displayToast(getString(R.string.action_contact_message));
return true;
}
return super.onOptionsItemSelected(item);
}
Gunakan intent untuk meluncurkan SettingsActivity dari MainActivity. Tambahkan intent di akhir blok switch case:
...
case R.id.action_settings:
Intent intent = new Intent(this, SettingsActivity.class);
startActivity(intent);
return true;
}
return super.onOptionsItemSelected(item);
}
Jalankan aplikasi menggunakan ponsel cerdas atau emulator ponsel cerdas sehingga Anda bisa melihat bagaimana template Settings Activity menangani ukuran layar ponsel cerdas, dan ikuti langkah-langkah ini:
Ketuk ikon luapan untuk menu opsi dan ketuk Settings untuk melihat aktivitas setelan, seperti yang ditampilkan di sebelah kiri gambar di bawah.
Ketuk setiap header setelan (General, Notifications, dan Data & sync), seperti yang ditampilkan di bagian tengah gambar di bawah, untuk melihat grup setelan di setiap layar anak di layar anak Settings, seperti yang ditampilkan di sebelah kanan gambar di bawah.
Ketuk tombol Naik di aktivitas setelan untuk kembali ke aktivitas utama.
2.3 Customize the settings provided by the template
Buka file strings.xml di direktori res > values dan konten ke komentar <!-- Example settings for Data & Sync -->:
Edit sumber daya string pref_header_data_sync yang disetel ke Data & sinkron( & adalah kode HTML untuk ampersand). Ubah nilai ke Account (tanpa tanda petik).
Optimalkan nama sumber daya dengan mengikuti langkah-langkah ini (aplikasi masih akan berjalan tanpa mengoptimalkan nama, tetapi pengoptimalan akan membuat kode lebih mudah dipahami):
Kontrol-klik (atau klik kanan) nama sumber daya pref_header_data_sync dan pilih Refactor > Rename.
Ubah nama menjadi pref_header_account, klik opsi untuk menelusuri di komentar dan string, dan klik Refactor.
Edit sumber daya string pref_title_sync_frequency (yang disetel ke Sync frequency) menjadi Market.
Refactor > Rename nama sumber daya menjadi pref_title_accountseperti yang sudah Anda lakukan sebelumnya.
Refactor > Rename sumber daya larik string pref_sync_frequency_titles menjadi pref_market_titles.
Ubah setiap nilai di larik string pref_market_titles (15 minutes, 30 minutes, 1 hour, dsb.) menjadi judul pasar, seperti United States, Canada, dsb., bukan frekuensi:
Gulir ke bawah ke sumber daya string pref_title_system_sync_settings dan edit sumber daya (yang disetel ke System sync settings) menjadi Account settings.
Refactor > Rename sumber daya larik string pref_title_system_sync_settings menjadi pref_title_account_settings.
Buka file pref_data_sync.xml. ListPreference di layout ini mendefinisikan setelan yang baru saja Anda ubah. Perhatikan bahwa sumber daya string untuk atribut android:entries, android:entryValues, dan android:title sekarang diubah menjadi nilai yang Anda berikan di langkah sebelumnya:
Tambahkan kode berikut di akhir metode onCreate() MainActivity. Anda bisa langsung menambahkannya setelah kode yang Anda tambahkan di langkah sebelumnya untuk menyetel default untuk setelan:
Jalankan aplikasi lagi menggunakan ponsel cerdas atau emulator ponsel cerdas. Saat layar utama aplikasi muncul pertama kali, Anda akan melihat pesan toast di bawah layar. Pertama kali menjalankan aplikasi, Anda akan melihat “-1” yang ditampilkan di toast karena Anda belum mengubah setelan.
3. Ketuk Settings di menu opsi dan ketuk Account di layar Settings. Pilih Canada* di “Market” seperti yang ditampilkan di bawah ini:
4. Ketuk tombol Naik di bilah aplikasi untuk kembali ke layar Settings, dan ketuk lagi untuk kembali ke layar utama. Anda akan melihat pesan toast yang menampilkan “CA” (yang berarti Canada):
Anda telah berhasil mengintegrasikan Settings Activity dengan aplikasi Droid Cafe.
5. Sekarang jalankan aplikasi di tablet atau emulator tablet.