Saya mencoba untuk setResult setelah tombol KEMBALI ditekan. Saya memanggil onDestroy
Intent data = new Intent();
setResult(RESULT_OK, data)
Tapi kalau sudah sampai
onActivityResult(int requestCode, int resultCode, Intent data)
resultCode adalah 0 (RESULT_CANCELED) dan data adalah 'null'.
Lantas, bagaimana cara menyampaikan hasil dari aktivitas yang diakhiri dengan tombol BACK?
Activity
hasil harus diatur sebelumfinish()
dipanggil. Mengklik KEMBALI sebenarnya memanggilfinish()
Andaactivity
, jadi Anda dapat menggunakan cuplikan berikut:Jika Anda menelepon
NavUtils.navigateUpFromSameTask();
dionOptionsItemSelected()
,finish()
disebut, tetapi Anda akan mendapatkan salah saturesult code
. Jadi Anda harus memanggilfinish()
tidaknavigateUpFromSameTask
dionOptionsItemSelected()
. requestCode salah di onActivityResultsumber
finish
hubungannya denganonPause
danonDestroy
? Mereka yang benar-benar tidak berhubungan kecuali untuk yangfinish
memulai proses terminasi yangonPause
danonDestroy
merupakan bagian dari.Jika Anda ingin mengatur beberapa kebiasaan
RESULT_CODE
dionBackPressed
acara maka Anda perlu untuk set pertamaresult
dan kemudian memanggilsuper.onBackPressed()
dan Anda akan menerima samaRESULT_CODE
dalam kegiatan pemanggilonActivityResult
metodesumber
Saya memperbarui kode saya. Awalnya saya menyiapkan beberapa data dan mengaturnya sebagai
activity result
dionDestroy
(ini tidak bekerja). Sekarang saya mengaturactivity
data setiap kali data yang akan dikembalikan diperbarui, dan tidak ada apa-apaonDestroy
.sumber
setResult()
, data Anda akan hilang.Anda harus mengganti onOptionsItemSelected seperti ini:
sumber
Lihat dokumen onActivityResult (int, int, Intent)
Solusinya adalah memeriksa resultCode untuk nilai Activity.RESULT_CENCELED . Jika ya, berarti KEMBALI ditekan atau aktivitas macet. Semoga berhasil untuk kalian, berhasil untuk saya :).
sumber
onDestroy
sudah terlambat dalam rantai - alih-alih gantionPause
dan periksaisFinishing()
untuk memeriksa apakah aktivitas Anda berada di akhir siklus hidupnya.sumber
Coba ganti onBackPressed (dari android level 5 ke atas), atau timpa onKeyDown () dan tangkap KeyEvent.BUTTON_BACK (lihat Hasil Aktivitas Android ) Ini melakukan trik untuk saya.
sumber
Jangan mengandalkan logika apa pun yang dijalankan di onPause salah satu aktivitas saat Anda kembali ke aktivitas awal. Menurut dokumen:
Lihat http://goo.gl/8S2Y untuk detailnya.
Cara teraman adalah mengatur hasil setelah setiap operasi pengubahan hasil selesai (seperti yang Anda sebutkan dalam jawaban Anda)
sumber
saya tempel jawabannya mungkin akan membantu orang lain: ketika satu set launcheMode dengan android: launchMode = "singleTask" saya juga tidak bisa mendapatkan hasilnya, dokumen mengatakan:
dan:
sumber