Dalam senario ini, ViewPager dengan enam serpihan dilaksanakan dalam Aktiviti. Meleret antara serpihan dilumpuhkan, jadi butang digunakan untuk menukar serpihan semasa. Permintaan GET dihantar ke pelayan dan data respons dipaparkan dalam setiap serpihan selepas leretan selesai.
Pendekatan Pertama (Menggunakan setUserVisibleHint)
Pada mulanya, kaedah setUserVisibleHint telah digunakan untuk mencetuskan permintaan GET apabila serpihan kelihatan. Walau bagaimanapun, pendekatan ini mengakibatkan kelewatan dalam animasi leret disebabkan oleh pelaksanaan segera permintaan.
Pendekatan Kedua (Menggunakan OnPageChangeListener)
Untuk mengatasi lag animasi , OnPageChangeListener telah ditambahkan pada ViewPager. Pendengar ini menjejaki keadaan tatal halaman dan menghantar permintaan GET apabila serpihan yang dikehendaki kelihatan sepenuhnya (iaitu, keadaan tatal bersamaan IDLE).
Masalah dan Penyelesaian
The pendekatan kedua berfungsi dengan baik, tetapi NullPointerException berlaku apabila melaksanakan sendGetRequest(). Ini kerana rujukan serpihan tidak diperoleh dengan betul. Untuk menyelesaikan masalah ini, adalah perlu untuk menyimpan rujukan kepada serpihan dalam kaedah instantiateItem FragmentPagerAdapter. Kemudian, dalam OnPageChangeListener, bukannya mencipta serpihan baharu, serpihan yang dirujuk daripada ViewPagerPagerAdapter boleh digunakan.
Kod Kemas Kini untuk ViewPager2 (Kotlin)
<code class="kotlin">viewPager.registerOnPageChangeCallback( object: ViewPager2.OnPageChangeCallback() { override fun onPageSelected(position: Int) { super.onPageSelected(position) val frag: Fragment = mAdapter.fragments[position] if (frag != null && frag is FragmentTwo) { (frag as FragmentTwo).sendGetRequest() } } } )</code>
Di sini, mAdapter merujuk kepada FragmentPagerAdapter yang digunakan dalam ViewPager2.
Atas ialah kandungan terperinci Bagaimana untuk Mengakses dan Melaksanakan Kaedah dalam Fragmen ViewPager daripada Aktiviti?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!