Untuk mengaktifkan tombol kembali ActionBar Anda jelas membutuhkan ActionBar di Aktivitas Anda. Ini diatur oleh tema yang Anda gunakan. Anda dapat menyetel tema untuk Aktivitas Anda di AndroidManfiest.xml
. Jika Anda menggunakan misalnya @android:style/Theme.NoTitleBar
tema, Anda tidak memiliki ActionBar. Dalam hal ini panggilan ke getActionBar()
akan mengembalikan nol. Jadi, pastikan Anda memiliki ActionBar terlebih dahulu.
Langkah selanjutnya adalah menyetel android:parentActivityName
ke aktivitas yang ingin Anda navigasi jika Anda menekan tombol kembali. Ini harus dilakukan di AndroidManifest.xml
juga.
Sekarang Anda dapat mengaktifkan tombol kembali dalam onCreate
metode aktivitas "anak" Anda.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getActionBar().setDisplayHomeAsUpEnabled(true);
}
Sekarang Anda harus menerapkan logika untuk tombol kembali. Anda cukup mengganti onOptionsItemSelected
metode dalam aktivitas "anak" Anda dan memeriksa id dari tombol kembali yaitu android.R.id.home
.
Sekarang Anda dapat mengaktifkan metode NavUtils.navigateUpFromSameTask(this);
TAPI jika Anda tidak menentukannya di android:parentActivityName
dalam Anda, AndroidManifest.xml
ini akan merusak aplikasi Anda.
Terkadang ini yang Anda inginkan karena mengingatkan Anda bahwa Anda lupa "sesuatu". Jadi jika ingin mencegahnya, Anda bisa memeriksa apakah aktivitas Anda memiliki induk yang menggunakan getParentActivityIntent()
metode tersebut. Jika ini mengembalikan null, Anda belum menentukan induknya.
Dalam hal ini Anda dapat mengaktifkan onBackPressed()
metode yang pada dasarnya sama seperti jika pengguna menekan tombol kembali pada perangkat. Penerapan yang baik yang tidak pernah membuat aplikasi Anda mogok adalah:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
if (getParentActivityIntent() == null) {
Log.i(TAG, "You have forgotten to specify the parentActivityName in the AndroidManifest!");
onBackPressed();
} else {
NavUtils.navigateUpFromSameTask(this);
}
return true;
default:
return super.onOptionsItemSelected(item);
}
}
Harap perhatikan bahwa animasi yang dilihat pengguna berbeda antara NavUtils.navigateUpFromSameTask(this);
dan onBackPressed()
.
Terserah Anda jalan mana yang Anda ambil, tetapi saya menemukan solusi yang membantu, terutama jika Anda menggunakan kelas dasar untuk semua aktivitas Anda.
getActionBar().setDisplayHomeAsUpEnabled(true);
di onCreate danswitch (item.getItemId()) {case android.R.id.home: onBackPressed();break;}
dionOptionsItemSelected
? keduanya di ServicesViewActivity