FirstActivity.Java
memiliki FragmentA.Java
panggilan mana startActivityForResult()
.
SecondActivity.Java
menelepon finish()
tetapi onActivityResult
tidak pernah dipanggil yang tertulis di FragmentA.Java
.
FragmentA.Java
kode:
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
// some code
Intent i = new Intent(getActivity(), SecondActivity.class);
i.putExtra("helloString", helloString);
getActivity().startActivityForResult(i, 1);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
getActivity();
if(requestCode == 1 && resultCode == Activity.RESULT_OK) {
//some code
}
}
SecondActivity.Java
kode:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//some code
Intent returnIntent = new Intent();
returnIntent.putExtra("result", result);
setResult(Activity.RESULT_OK,returnIntent);
finish();
}
Saya telah mencoba men-debug kode, tetapi onAcitvityResult()
tidak pernah dipanggil.
android
android-fragmentactivity
Tuan Roshan Pawar
sumber
sumber
Jawaban:
Anda harus menulis
onActivityResult()
di AndaFirstActivity.Java
sebagai berikutJadi ini akan memanggil fragmen Anda
onActivityResult()
Sunting: solusinya adalah ganti
getActivity().startActivityForResult(i, 1);
denganstartActivityForResult(i, 1);
sumber
onActivityresult()
dariFirstAcivity.Java
dipanggil danonActivityresult()
dariFragmentA.Java
tidak pernah dipanggil. Tolong bantu.startActivityForResult
bukangetActivity().start...
? Karena sejauh yang saya bisa lihat, Anda menimpa definisionActivityResult
dengan definisi sendiri, dalam Aktivitas (yaitu ini berperilaku persis sama seperti jika penimpaan dalam jawaban tidak ada).Jawaban Kevin berhasil tetapi itu membuatnya sulit untuk bermain dengan data menggunakan solusi itu.
Solusi terbaik adalah jangan mulai
startActivityForResult()
dari level aktivitas.dalam kasus Anda jangan panggil
getActivity().startActivityForResult(i, 1);
Sebaliknya, gunakan saja
startActivityForResult()
dan itu akan bekerja dengan baik! :)sumber
Anda harus menulis onActivityResult () di FirstActivity.Java Anda sebagai berikut
Ini akan memicu metode fragmen onActivityResult di FirstActivity.java
sumber
Fragmen sudah memiliki
startActivityForResult
, yang akan memanggilonActivityResult
fragmen jika Anda menggunakannya, alih-alihgetActivity()
...sumber
Yang paling penting, yang semuanya hilang di sini adalah ... LaunchMode dari FirstActivity harus singleTop. Jika itu singleInstance, onActivityResult di FragmentA akan dipanggil tepat setelah memanggil metode startActivityForResult. Jadi, itu tidak akan menunggu pemanggilan metode finish () di SecondActivity.
Jadi, ikuti langkah-langkah berikut, Ini pasti akan berhasil karena itu bekerja untuk saya juga setelah penelitian yang panjang.
Dalam file AndroidManifest.xml, jadikan launchMode dari FirstActivity.Java sebagai singleTop.
Di FirstActivity.java, timpa metode onActivityResult. Karena ini akan memanggil onActivityResult of FragmentA.
Di FragmentA.Java, timpa metode onActivityResult
Telepon
startActivityForResult(intent, HOMEWORK_POST_ACTIVITY);
dari FragmentA.Javafinish();
Metode panggilan di SecondActivity.javaSemoga ini berhasil.
sumber
Kita bisa menelepon
startActivityForResult()
langsung dari Fragmen Jadi Anda harus meneleponthis.startActivityForResult(i, 1);
alih-alihgetActivity().startActivityForResult(i, 1);
Aktivitas akan mengirimkan Hasil Aktivitas ke Fragmen Anda.
sumber
Semoga sudah terlambat untuk jawabannya. Tetapi akan sangat membantu bagi siapa pun.
Dalam kasus saya ingin memanggil aktivitas dari Fragmen dan setResult kembali dari fragmen.
Saya telah menggunakan getContext of Fragment Like.
Dan Set Hasil dari Fragmen
Sekarang Mendapatkan Hasil menjadi Fragmen dengan
sumber
onActivityResult () dari MAinActivity akan memanggil, onActivityResult () dari Fragement tidak akan memanggil karena fragmen ditempatkan di Aktivitas jadi jelas kembali ke MainActivity
sumber
Jangan panggil
finish()
dionCreate()
metode maka itu bekerja dengan baik.sumber
telepon Anda
onActivityresult()
di ParentActivity.sumber