Aplikasi Anda mungkin memiliki tugas multi-langkah untuk pengguna. Misalnya, aplikasi Anda mungkin perlu memandu pengguna menyelesaikan pembelian konten tambahan, menyiapkan setelan konfigurasi yang rumit, atau mengonfirmasi keputusan. Untuk semua tugas ini, pengguna perlu dipandu dalam menyelesaikan satu atau beberapa keputusan atau langkah yang memiliki urutan tertentu.
Library androidx.leanback yang tidak digunakan lagi menyediakan class untuk mengimplementasikan tugas pengguna multi-langkah. Halaman ini membahas cara menggunakan class GuidedStepSupportFragment
untuk memandu pengguna menyelesaikan serangkaian keputusan dalam menyelesaikan tugas dengan menggunakan GuidedStepSupportFragment
.
Memberikan detail untuk sebuah langkah
GuidedStepSupportFragment
mewakili satu langkah dalam serangkaian langkah. Secara visual, objek ini memberikan tampilan panduan dengan
daftar tindakan atau keputusan yang mungkin untuk langkah tersebut.

Gambar 1. Contoh langkah terpandu.
Untuk setiap langkah dalam tugas multi-langkah, sediakan
GuidedStepSupportFragment
dan berikan informasi konteks tentang
langkah itu serta tindakan yang dapat dilakukan pengguna. Ganti
onCreateGuidance()
dan tampilkan
GuidanceStylist.Guidance
baru yang berisi informasi konteks, seperti judul langkah, deskripsi, dan ikon, seperti yang ditunjukkan dalam contoh berikut:
Kotlin
override fun onCreateGuidance(savedInstanceState: Bundle?): GuidanceStylist.Guidance { return GuidanceStylist.Guidance( getString(R.string.guidedstep_first_title), getString(R.string.guidedstep_first_description), getString(R.string.guidedstep_first_breadcrumb), activity.getDrawable(R.drawable.guidedstep_main_icon_1) ) }
Java
@Override public GuidanceStylist.Guidance onCreateGuidance(Bundle savedInstanceState) { String title = getString(R.string.guidedstep_first_title); String breadcrumb = getString(R.string.guidedstep_first_breadcrumb); String description = getString(R.string.guidedstep_first_description); Drawable icon = getActivity().getDrawable(R.drawable.guidedstep_main_icon_1); return new GuidanceStylist.Guidance(title, description, breadcrumb, icon); }
Tambahkan subclass GuidedStepSupportFragment
ke aktivitas yang Anda inginkan dengan memanggil GuidedStepSupportFragment.add()
dalam metode onCreate()
aktivitas Anda.
Jika aktivitas Anda hanya berisi objek GuidedStepSupportFragment
, gunakan GuidedStepSupportFragment.addAsRoot()
, bukan add()
untuk menambahkan GuidedStepSupportFragment
yang pertama. Penggunaan
addAsRoot()
membantu memastikan bahwa jika pengguna menekan tombol Kembali pada remote TV saat melihat
GuidedStepSupportFragment
pertama, GuidedStepSupportFragment
dan aktivitas induk akan tertutup.
Catatan: Tambahkan objek GuidedStepSupportFragment
secara terprogram, bukan di file XML tata letak Anda.
Membuat dan menangani tindakan pengguna
Tambahkan tindakan pengguna dengan mengganti
onCreateActions()
.
Dalam penggantian, tambahkan GuidedAction
baru untuk setiap item tindakan dan berikan string, deskripsi, serta ID tindakan. Gunakan
GuidedAction.Builder
untuk menambahkan tindakan baru.
Kotlin
override fun onCreateActions(actions: MutableList<GuidedAction>, savedInstanceState: Bundle?) { super.onCreateActions(actions, savedInstanceState) // Add "Continue" user action for this step actions.add(GuidedAction.Builder() .id(CONTINUE) .title(getString(R.string.guidedstep_continue)) .description(getString(R.string.guidedstep_letsdoit)) .hasNext(true) .build()) ...
Java
@Override public void onCreateActions(List<GuidedAction> actions, Bundle savedInstanceState) { // Add "Continue" user action for this step actions.add(new GuidedAction.Builder() .id(CONTINUE) .title(getString(R.string.guidedstep_continue)) .description(getString(R.string.guidedstep_letsdoit)) .hasNext(true) .build()); ...
Tindakan tidak terbatas pada pilihan baris tunggal. Berikut adalah jenis tindakan lain yang dapat Anda buat:
-
Tambahkan tindakan label informasi untuk memberikan informasi tambahan tentang pilihan pengguna dengan menetapkan
infoOnly(true)
. JikainfoOnly
bernilai benar (true), pengguna tidak dapat memilih tindakan. -
Tambahkan tindakan teks yang dapat diedit dengan menyetel
editable(true)
. Jikaeditable
bernilai benar (true), pengguna dapat memasukkan teks dalam tindakan yang dipilih menggunakan remote atau keyboard yang terhubung. GantionGuidedActionEditedAndProceed()
untuk mendapatkan teks yang dimodifikasi yang dimasukkan pengguna. Anda juga dapat menggantionGuidedActionEditCanceled()
untuk mengetahui kapan pengguna membatalkan input. -
Tambahkan serangkaian tindakan yang berperilaku seperti tombol pilihan yang dapat dicentang menggunakan
checkSetId()
dengan nilai ID umum untuk mengelompokkan tindakan ke dalam sebuah set. Semua tindakan dalam daftar yang sama dengan ID check-set yang sama dianggap tertaut. Saat pengguna memilih salah satu tindakan dalam set tersebut, tindakan akan dicentang dan semua tindakan lainnya menjadi tidak dicentang. -
Tambahkan tindakan pemilih tanggal dengan menggunakan
GuidedDatePickerAction.Builder
bukanGuidedAction.Builder
dionCreateActions()
. GantionGuidedActionEditedAndProceed()
untuk mendapatkan nilai tanggal yang diubah yang dimasukkan pengguna. - Tambahkan tindakan yang menggunakan subtindakan agar pengguna dapat memilih dari daftar pilihan yang diperluas. Subtindakan dijelaskan di bagian Menambahkan subtindakan.
- Tambahkan tindakan tombol yang muncul di sebelah kanan daftar tindakan dan yang mudah diakses. Tindakan tombol dijelaskan di bagian Menambahkan tindakan tombol.
Anda juga dapat menambahkan indikator visual bahwa memilih tindakan akan mengarahkan ke langkah baru dengan menyetel
hasNext(true)
.
Untuk semua atribut lain yang dapat Anda tetapkan, lihat
GuidedAction
.
Untuk merespons tindakan, ganti
onGuidedActionClicked()
dan proses
GuidedAction
yang diteruskan. Identifikasi tindakan yang dipilih dengan
memeriksa GuidedAction.getId()
.
Menambahkan subtindakan
Beberapa tindakan dapat mengharuskan Anda memberikan sekumpulan pilihan tambahan kepada pengguna. GuidedAction
dapat menentukan daftar subtindakan yang ditampilkan sebagai menu tindakan turunan.

Gambar 2. Subtindakan langkah terpandu.
Daftar subtindakan dapat berisi tindakan reguler atau tindakan tombol pilihan, tetapi tidak dapat berisi tindakan pemilih tanggal atau teks yang dapat diedit. Selain itu, subtindakan tidak dapat memiliki sekumpulan subtindakan, karena sistem tidak mendukung lebih dari satu tingkat subtindakan.
Untuk menambahkan subtindakan, pertama-tama buat dan isi daftar objek
GuidedAction
yang berfungsi sebagai subtindakan, seperti yang ditunjukkan dalam contoh berikut:
Kotlin
subActions.add(GuidedAction.Builder() .id(SUBACTION1) .title(getString(R.string.guidedstep_subaction1_title)) .description(getString(R.string.guidedstep_subaction1_desc)) .build()) ...
Java
List<GuidedAction> subActions = new ArrayList<GuidedAction>(); subActions.add(new GuidedAction.Builder() .id(SUBACTION1) .title(getString(R.string.guidedstep_subaction1_title)) .description(getString(R.string.guidedstep_subaction1_desc)) .build()); ...
Di onCreateActions()
, buat
GuidedAction
tingkat teratas yang menampilkan
daftar subtindakan saat dipilih:
Kotlin
... actions.add(GuidedAction.Builder() .id(SUBACTIONS) .title(getString(R.string.guidedstep_subactions_title)) .description(getString(R.string.guidedstep_subactions_desc)) .subActions(subActions) .build()) ...
Java
@Override public void onCreateActions(List<GuidedAction> actions, Bundle savedInstanceState) { ... actions.add(new GuidedAction.Builder() .id(SUBACTIONS) .title(getString(R.string.guidedstep_subactions_title)) .description(getString(R.string.guidedstep_subactions_desc)) .subActions(subActions) .build()); ... }
Terakhir, respons pilihan subtindakan dengan mengganti
onSubGuidedActionClicked()
:
Kotlin
override fun onSubGuidedActionClicked(action: GuidedAction): Boolean { // Check for which action was clicked and handle as needed when(action.id) { SUBACTION1 -> { // Subaction 1 selected } } // Return true to collapse the subactions menu or // false to keep the menu expanded return true }
Java
@Override public boolean onSubGuidedActionClicked(GuidedAction action) { // Check for which action was clicked and handle as needed if (action.getId() == SUBACTION1) { // Subaction 1 selected } // Return true to collapse the subactions menu or // false to keep the menu expanded return true; }
Menambahkan tindakan tombol
Jika langkah terpandu Anda memiliki daftar panjang tindakan, pengguna mungkin harus men-scroll daftar untuk mengakses tindakan yang paling umum digunakan. Gunakan tindakan tombol untuk memisahkan tindakan yang umum digunakan dari daftar tindakan. Tindakan tombol muncul di samping daftar tindakan dan mudah diakses.

Gambar 3. Tindakan tombol langkah terpandu.
Tindakan tombol dibuat dan ditangani sama seperti halnya tindakan biasa, tetapi pembuatannya dilakukan di
onCreateButtonActions()
, bukan di onCreateActions()
. Respons tindakan tombol di
onGuidedActionClicked()
.
Gunakan tindakan tombol untuk tindakan sederhana, seperti tindakan navigasi antar-langkah. Jangan gunakan tindakan pemilih tanggal atau tindakan yang dapat diedit lainnya sebagai tindakan tombol. Selain itu, tindakan tombol tidak dapat memiliki subtindakan.
Mengelompokkan langkah terpandu ke dalam urutan
GuidedStepSupportFragment
mewakili satu langkah. Untuk membuat urutan langkah yang teratur, kelompokkan beberapa objek GuidedStepSupportFragment
secara bersamaan menggunakan GuidedStepSupportFragment.add()
untuk menambahkan langkah selanjutnya dalam urutan ke tumpukan fragmen.
Kotlin
override fun onGuidedActionClicked(action: GuidedAction) { val fm = fragmentManager when(action.id) { CONTINUE -> GuidedStepSupportFragment.add(fm, SecondStepFragment()) } }
Java
@Override public void onGuidedActionClicked(GuidedAction action) { FragmentManager fm = getFragmentManager(); if (action.getId() == CONTINUE) { GuidedStepSupportFragment.add(fm, new SecondStepFragment()); } ...
Jika pengguna menekan tombol Kembali pada remote TV, perangkat akan menampilkan
GuidedStepSupportFragment
sebelumnya pada tumpukan fragmen. Jika ingin memberikan GuidedAction
Anda sendiri yang mengembalikan pengguna ke langkah sebelumnya, Anda dapat mengimplementasikan perilaku Kembali dengan memanggil
getFragmentManager().popBackStack()
.
Jika ingin mengembalikan pengguna ke langkah yang lebih awal lagi dalam urutan ini, gunakan
popBackStackToGuidedStepSupportFragment()
untuk kembali ke GuidedStepSupportFragment
tertentu dalam tumpukan fragmen.
Setelah pengguna menyelesaikan langkah terakhir dalam urutan, gunakan
finishGuidedStepSupportFragments()
untuk menghapus semua instance
GuidedStepSupportFragment
dari tumpukan saat ini dan kembali ke aktivitas induk awal. Jika GuidedStepSupportFragment
pertama ditambahkan menggunakan addAsRoot()
, pemanggilan finishGuidedStepSupportFragments()
juga akan menutup aktivitas induk.
Menyesuaikan presentasi langkah
Class GuidedStepSupportFragment
dapat menggunakan tema kustom yang mengontrol aspek presentasi seperti pemformatan teks judul atau animasi transisi langkah. Tema kustom harus diwarisi dari
Theme_Leanback_GuidedStep
dan dapat memberikan
nilai pengganti untuk atribut yang ditentukan dalam
GuidanceStylist
dan
GuidedActionsStylist
.
Untuk menerapkan tema kustom ke GuidedStepSupportFragment
Anda, lakukan salah satu langkah berikut:
-
Terapkan tema ke aktivitas induk dengan menetapkan atribut
android:theme
ke elemen aktivitas dalam manifes Android. Menetapkan atribut ini akan menerapkan tema ke semua tampilan turunan dan merupakan cara paling mudah untuk menerapkan tema kustom jika aktivitas induknya hanya berisi objekGuidedStepSupportFragment
. -
Jika aktivitas Anda sudah menggunakan tema kustom dan Anda tidak ingin menerapkan gaya
GuidedStepSupportFragment
ke tampilan lain dalam aktivitas tersebut, tambahkan atributLeanbackGuidedStepTheme_guidedStepTheme
ke tema aktivitas kustom yang ada. Atribut ini mengarah ke tema kustom yang hanya digunakan oleh objekGuidedStepSupportFragment
dalam aktivitas Anda. -
Jika Anda menggunakan objek
GuidedStepSupportFragment
dalam aktivitas lain yang merupakan bagian dari keseluruhan tugas multi-langkah yang sama, dan ingin menggunakan tema visual yang konsisten di semua langkah, gantiGuidedStepSupportFragment.onProvideTheme()
dan tampilkan tema kustom Anda.
Untuk informasi selengkapnya tentang cara menambahkan gaya dan tema, lihat Gaya dan Tema.
Class GuidedStepSupportFragment
menggunakan class stylist khusus untuk mengakses dan menerapkan atribut tema.
Class GuidanceStylist
menggunakan informasi tema untuk mengontrol presentasi tampilan panduan di sebelah kiri, sedangkan class GuidedActionsStylist
menggunakan informasi tema untuk mengontrol presentasi tampilan tindakan di sebelah kanan.
Untuk menyesuaikan gaya visual langkah-langkah di luar apa yang dapat disediakan melalui kustomisasi tema, tambahkan subclass GuidanceStylist
atau GuidedActionsStylist
dan kembalikan subclass Anda di GuidedStepSupportFragment.onCreateGuidanceStylist()
atau GuidedStepSupportFragment.onCreateActionsStylist()
.
Untuk mengetahui detail tentang hal yang dapat Anda sesuaikan dalam subclass ini, lihat dokumentasi di GuidanceStylist
dan GuidedActionsStylist
.