Dalam aplikasi android saya memuat data dari Db ke TableView
dalam a Fragment
. Tapi ketika saya reload Fragment
itu menampilkan data sebelumnya. Dapatkah saya mengisi kembali Fragment
dengan data saat ini daripada data sebelumnya?
android
android-fragments
Samantha Withanage
sumber
sumber
Jawaban:
Saya rasa Anda ingin menyegarkan konten fragmen setelah pembaruan db
Jika demikian, lepaskan pecahannya dan pasang kembali
Your_Fragment_TAG adalah nama yang Anda berikan pada fragmen Anda saat membuatnya
Kode ini untuk pustaka dukungan.
Jika Anda tidak mendukung perangkat lama, cukup gunakan getFragmentManager, bukan getSupportFragmentManager
[EDIT]
Metode ini membutuhkan Fragmen untuk memiliki tag.
Jika Anda tidak memilikinya, maka metode @ Hammer adalah yang Anda butuhkan.
sumber
Ini akan menyegarkan fragmen saat ini:
sumber
Jika Anda tidak memiliki tag fragmen, kode berikut berfungsi dengan baik untuk saya.
sumber
getActivity()
dalam Aktivitas saya. Haruskah saya gunakanActivity.this...
?Anda dapat menyegarkan fragmen Anda saat terlihat oleh pengguna, cukup tambahkan kode ini ke dalam Fragmen Anda, ini akan menyegarkan fragmen Anda saat terlihat.
sumber
Untuk menyegarkan fragmen, jawaban yang diterima tidak akan berfungsi di Nougat dan versi di atasnya. Untuk membuatnya bekerja pada semua os yang dapat Anda lakukan berikut ini.
sumber
Anda tidak dapat memuat ulang fragmen saat itu dilampirkan ke suatu Kegiatan, di mana Anda mendapatkan
Fragment Already Added
pengecualian " ".Jadi, fragmen pertama-tama harus dilepaskan dari aktivitasnya, lalu dilampirkan. Semua bisa dilakukan dengan menggunakan api fasih dalam satu baris:
Pembaruan: Ini untuk menggabungkan perubahan yang dilakukan pada API 26 dan di atasnya:
Untuk penjelasan lebih lanjut tentang pembaruan, silakan lihat https://stackoverflow.com/a/51327440/4514796
sumber
ini hanya akan berfungsi jika Anda menggunakan
FragmentManager
untuk menginisialisasi fragmen. Jika Anda memilikinya sebagai<fragment ... />
XML, itu tidak akan memanggilonCreateView
lagi. Membuang waktu 30 menit saya untuk memikirkan hal ini.sumber
Di sini yang saya lakukan dan berhasil untuk saya, saya menggunakan firebase dan ketika pengguna masuk, saya ingin menyegarkan Fragmen saat ini terlebih dahulu, Anda perlu meminta konteks dari aktivitas karena fragmen tidak memiliki cara untuk mendapatkan konteks kecuali Anda menyetelnya dari Aktivitas atau konteks di sini adalah kode yang saya gunakan dan bekerja dalam bahasa kotlin saya pikir Anda bisa menggunakan yang sama di kelas java
sumber
Gunakan
ContentProvider
dan muat data Anda menggunakan 'CursorLoader'. Dengan arsitektur ini, data Anda akan dimuat ulang secara otomatis pada perubahan database. Gunakan kerangka kerja pihak ketiga untuk AndaContentProvider
- Anda tidak benar-benar ingin menerapkannya sendiri ...sumber
Saya memiliki masalah yang sama tetapi tidak satu pun di atas yang berhasil untuk masalah saya. baik ada masalah backstack (setelah memuat ketika pengguna menekan kembali itu akan pergi ke fragmen yang sama lagi) atau tidak memanggil
onCreaetView
akhirnya saya melakukan ini:
Poin bagusnya adalah Anda juga tidak memerlukan tag atau id dari fragmen. jika Anda ingin memuat ulang
sumber
Manfaatkan metode onResume ... baik pada aktivitas fragmen maupun aktivitas yang menahan fragmen.
sumber
GeneralInfo
ini kelas Fragmen sayaGeneralInfo.java
Saya meletakkannya sebagai metode di kelas fragmen:
sumber
Misalnya dengan TabLayout: cukup terapkan OnTabSelectedListener. Untuk memuat ulang halaman, Anda dapat menggunakan implementasi SwipeRefreshLayout.OnRefreshListener yaitu
public class YourFragment extends Fragment implements SwipeRefreshLayout.OnRefreshListener {
metode onRefresh () akan menjadi @Override dari antarmuka yaitu:
Berikut tata letaknya:
Kode dalam aktivitas Anda
TabLayout tabLayout = (TabLayout) findViewById (R.id.tablayout); tabLayout.setupWithViewPager (viewPager);
sumber
Lakukan tulis viewpagerAdapter.notifyDataSetChanged (); di onResume () di MainActivity. Semoga berhasil :)
sumber
Cara termudah
buat metode statis publik yang berisi viewpager.setAdapter
membuat adaptor dan viewpager statis
panggil di mana saja, aktivitas apa pun, fragmen apa pun.
sumber