Mencoba memanggil metode dalam aktivitas saya dari sebuah fragmen. Saya ingin fragmen untuk memberikan data metode dan untuk mendapatkan data ketika metode kembali. Saya ingin mencapai mirip dengan memanggil metode statis, tetapi tanpa menggunakan statis karena itu membuat masalah dalam aktivitas.
Baru mengenal fragmen jadi saya perlu penjelasan yang mudah dan pedagogis!
Terima kasih!
android
android-fragments
Joakim Ericsson
sumber
sumber
Anda mungkin harus mencoba memisahkan fragmen dari aktivitas jika Anda ingin menggunakannya di tempat lain. Anda dapat melakukan ini dengan membuat antarmuka yang mengimplementasikan aktivitas Anda.
Jadi, Anda akan mendefinisikan antarmuka seperti berikut:
Misalkan misalnya Anda ingin memberikan sebuah String aktivitas dan minta mengembalikan Integer:
Ini dapat didefinisikan dalam fragmen atau file terpisah.
Maka Anda akan memiliki aktivitas Anda mengimplementasikan antarmuka.
Kemudian dalam fragmen Anda, Anda akan memiliki variabel MyStringListener dan Anda akan mengatur pendengar dalam fragmen pada metode Attach (Aktivitas aktivitas).
sunting (17.12.2015):
onAttach(Activity activity) is deprecated, use onAttach(Context context) instead, it works as intended
Jawaban pertama pasti berhasil tetapi pasangan Anda fragmen saat ini dengan aktivitas host. Praktik yang baik untuk menjaga fragmen dipisahkan dari aktivitas host jika Anda ingin menggunakannya dalam kegiatan lain.
sumber
Untuk pengembang Kotlin
Untuk pengembang Java
sumber
Perbarui setelah saya lebih memahami cara kerja fragmen. Setiap fragmen milik aktivitas orang tua. Jadi gunakan saja:
Dari dalam fragmen. Ini adalah jawaban yang lebih baik karena Anda menghindari gips superflous. Jika Anda tidak dapat menghindari gips dengan solusi ini gunakan yang di bawah ini.
============
apa yang harus Anda lakukan adalah melakukan aktivitas luar
membuat instance baru akan membingungkan bingkai android dan itu tidak akan bisa mengenalinya. Lihat juga :
https://stackoverflow.com/a/12014834/1984636
https://stackoverflow.com/a/2042829/1984636
sumber
Meskipun saya benar-benar menyukai Jawaban Marco, saya pikir cukup adil untuk menunjukkan bahwa Anda juga dapat menggunakan kerangka kerja berbasis penerbitan / berlangganan untuk mencapai hasil yang sama, misalnya jika Anda pergi dengan bus acara, Anda dapat melakukan hal berikut
pecahan :
Aktivitas:
sumber
Di kotlin Anda dapat memanggil metode aktivitas dari fragmen seperti di bawah ini:
sumber
Untuk mengakses fungsi yang dinyatakan dalam Aktivitas Anda melalui fragmen Anda, gunakan antarmuka, seperti yang ditunjukkan dalam jawaban oleh marco.
Untuk mengakses fungsi yang dideklarasikan dalam Fragmen Anda melalui aktivitas Anda, Anda dapat menggunakan ini jika Anda tidak memiliki tag atau id
Ini adalah ViewpagerAdapterClass
Jawaban ini untuk pemula seperti saya. Semoga harimu menyenangkan.
sumber
Ini dari kelas Fragmen ...
Kode Ini Dari Kelas Aktivitas ...
sumber
Saya telah mencoba dengan semua metode yang ditampilkan di utas ini dan tidak ada yang berhasil untuk saya, coba yang ini. Ini berhasil untuk saya.
sumber
Saya telah mencari cara terbaik untuk melakukan itu karena tidak setiap metode yang ingin kita panggil terletak di Fragmen dengan Induk Kegiatan yang sama.
Dalam Fragmen Anda
Dalam Aktivitas Anda
sumber
((YourActivityName)getActivity()).functionName();
Contoh:
((SessionActivity)getActivity()).changeFragment();
Catatan: nama kelas harus di tempat umum
sumber
Di mana
your_activity
nama aktivitas Anda danmethod_name()
nama metode yang ingin Anda panggil.sumber
Untuk Kotlin, cobalah
sumber