android - masalah komunikasi antara dua serpihan dalam ViewPage dalam serpihan
PHP中文网2017-05-16 13:21:02
0
2
668
Dalam serpihan utama, terdapat bar alat dengan ViewPager di bawahnya, dan serpihan di dalam ViewPager. Sekarang saya mahu mengendalikan butang pada bar alat dan menukar data dalam Fragmen dalam ViewPager Adakah terdapat kaedah komunikasi yang baik?
Seperti kata penyoal, jika ia hanya interaksi antara Bar Alat dan Fragmen, ia akan menjadi agak mudah:
Activity#setActionBar(android.widget.Toolbar) atau AppCompatActivity#setSupportActionBar(android.support.v7.widget.Toolbar)Activity#setActionBar(android.widget.Toolbar) 或者 AppCompatActivity#setSupportActionBar(android.support.v7.widget.Toolbar)
Fragment#setHasOptionsMenu(boolean)🎜
🎜🎜Pemprosesan ActionBar di dalam Fragment adalah sama seperti Activity, seperti yang ditunjukkan dalam rajah di bawah: 🎜
🎜p.s. Di bawah garis pemisah adalah maklumat yang berkaitan tentang interaksi antara Fragmen.🎜
🎜Cara paling mudah ialah EventBus, perpustakaan pilihan:🎜
🎜
🎜🎜greenrobot/EventBus🎜
🎜🎜AndroidKnife/RxBus🎜
🎜🎜segiempat/otto🎜
🎜Yang kedua ialah LocalBroadcastManager, rujukan:🎜
🎜Sekali lagi, Fragment menggunakan Aktiviti untuk berinteraksi, rujukan: 🎜
🎜
🎜🎜Panduan Pembangun Android # Berkomunikasi dengan Serpihan Lain🎜
🎜🎜Panduan Pembangun Android # Fragment🎜
🎜Akhir sekali, ia dilaksanakan secara langsung melalui TargetFragment, fungsi berkaitan: 🎜
🎜
🎜🎜Fragment#setTargetFragment(android.app.Fragment, int)🎜
🎜🎜Fragment#getTargetFragment()🎜
🎜🎜Fragment#getTargetRequestCode()🎜
🎜Selepas memilih kaedah, perkara terakhir yang perlu anda perhatikan ialah:🎜
🎜FragmentPagerAdapter dan FragmentStatePagerAdapter adalah berbeza apabila menguruskan Fragment: pemprosesan kitar semula Fragment adalah berbeza , apa yang perlu dipertimbangkan ialah bagaimana Apl harus mengendalikan (menyimpan & memulihkan) perhubungan interaktif antara Fragmen yang disebut dalam soalan apabila Fragmen dikitar semula dan muncul pada skrin semula 🎜 🎜
Seperti kata penyoal, jika ia hanya interaksi antara Bar Alat dan Fragmen, ia akan menjadi agak mudah:
Activity#setActionBar(android.widget.Toolbar)
atauAppCompatActivity#setSupportActionBar(android.support.v7.widget.Toolbar)
Activity#setActionBar(android.widget.Toolbar)
或者AppCompatActivity#setSupportActionBar(android.support.v7.widget.Toolbar)
Fragment#setHasOptionsMenu(boolean)
Fragment
内部的ActionBar的处理同Activity, 见下图:p.s.分割线以下为Fragment之间的交互的相关资料.
最简单的方式是EventBus, 可选库:
greenrobot/EventBus
AndroidKnife/RxBus
square/otto
其次就是LocalBroadcastManager, 参考资料:
Android Developer Reference # android.support.v4.content.LocalBroadcastManager
再次就是Fragment借助Activity来进行交互, 参考资料:
Android Developer Guide # Communicating with Other Fragments
Android Developer Guide # Fragment
最后就是直接通过TargetFragment来实现, 相关函数:
Fragment#setTargetFragment(android.app.Fragment, int)
Fragment#getTargetFragment()
Fragment#getTargetRequestCode()
方法选定之后, 最后需要注意的是:
Fragment
adalah sama seperti Activity, seperti yang ditunjukkan dalam rajah di bawah:🎜 🎜p.s. Di bawah garis pemisah adalah maklumat yang berkaitan tentang interaksi antara Fragmen.🎜
🎜Cara paling mudah ialah EventBus, perpustakaan pilihan:🎜 🎜 🎜🎜greenrobot/EventBus🎜 🎜🎜AndroidKnife/RxBus🎜 🎜🎜segiempat/otto🎜 🎜Yang kedua ialah LocalBroadcastManager, rujukan:🎜
🎜🎜Rujukan Pembangun Android # android.support.v4.content.LocalBroadcastManager🎜
🎜Sekali lagi, Fragment menggunakan Aktiviti untuk berinteraksi, rujukan: 🎜 🎜 🎜🎜Panduan Pembangun Android # Berkomunikasi dengan Serpihan Lain🎜 🎜🎜Panduan Pembangun Android # Fragment🎜 🎜Akhir sekali, ia dilaksanakan secara langsung melalui TargetFragment, fungsi berkaitan: 🎜 🎜 🎜🎜Fragment#setTargetFragment(android.app.Fragment, int)🎜 🎜🎜Fragment#getTargetFragment()🎜 🎜🎜Fragment#getTargetRequestCode()🎜🎜Selepas memilih kaedah, perkara terakhir yang perlu anda perhatikan ialah:🎜
Jika anda ingin menukar data antara dua Fragmen, anda boleh menggunakan EventBus
Jika anda hanya mengendalikan bar alat untuk menukar serpihan, muatkan serpihan dan hantar data terus