Rumah > Java > javaTutorial > Bagaimana untuk Mengakses dan Melaksanakan Kaedah dalam Fragmen ViewPager daripada Aktiviti?

Bagaimana untuk Mengakses dan Melaksanakan Kaedah dalam Fragmen ViewPager daripada Aktiviti?

Patricia Arquette
Lepaskan: 2024-11-04 09:52:01
asal
303 orang telah melayarinya

How to Access and Execute Methods in ViewPager Fragments from an Activity?

Akses Kaedah Pecahan ViewPager daripada Aktiviti

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan