Saya memiliki ViewPager yang terhubung ke FragmentPagerAdapter yang menampilkan tiga fragmen. ViewPager muncul untuk menghancurkan tampilan fragmen yang dihosting ketika itu lebih dari satu gesek dari posisi saat ini.
Tampilan ini adalah semua daftar sederhana dan pengoptimalan ini sama sekali tidak perlu, jadi saya ingin menonaktifkannya. Ini menyebabkan beberapa masalah visual karena daftar memiliki animasi tata letak yang diterapkan padanya dan animasi tersebut sedang diputar ulang setelah dihancurkan dan diciptakan kembali. Ini juga menunjukkan animasi intro scrollbar setiap kali (di mana scrollbar terlihat secara singkat untuk menunjukkan bahwa pengguliran dimungkinkan) yang dapat mengganggu, dan posisi gulir pengguna saat ini hilang dalam proses.
Itu juga tidak memuat fragmen ketiga hingga gesekan pertama terjadi, yang bermasalah karena masing-masing fragmen menangani panggilan layanannya sendiri dan saya lebih suka mematikan ketiga pada saat yang sama ketika aktivitas dimuat. Menunda panggilan layanan ketiga kurang ideal.
Apakah ada cara untuk meyakinkan ViewPager untuk menghentikan perilaku ini dan hanya menyimpan semua fragmen saya di memori?
Secara default, ViewPager membuat ulang fragmen ketika Anda menggesek halaman. Untuk mencegah ini, Anda dapat mencoba salah satu dari dua hal:
1. Di onCreate () dari fragmen Anda, panggil setRetainInstance (true).
2. Jika jumlah fragmen diperbaiki & relatif kecil, maka di onCreate Anda () tambahkan kode berikut:
Jika saya ingat dengan benar, opsi kedua lebih menjanjikan. Tapi saya mendorong Anda untuk mencoba keduanya dan melihat mana yang berfungsi.
sumber
"Setel jumlah halaman yang harus dipertahankan di kedua sisi halaman saat ini dalam hierarki tampilan dalam keadaan siaga. Halaman di luar batas ini akan dibuat kembali dari adaptor bila diperlukan."
http://developer.android.com/reference/android/support/v4/view/ViewPager.html#setOffscreenPageLimit(int)
sumber