android - masalah komunikasi antara dua serpihan dalam ViewPage dalam serpihan
PHP中文网
PHP中文网 2017-05-16 13:21:02
0
2
674

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?

PHP中文网
PHP中文网

认证高级PHP讲师

membalas semua(2)
为情所困

Seperti kata penyoal, jika ia hanya interaksi antara Bar Alat dan Fragmen, ia akan menjadi agak mudah:

  1. 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)

  2. Fragment#setHasOptionsMenu(boolean)

  3. Fragment内部的ActionBar的处理同Activity, 见下图:

p.s.分割线以下为Fragment之间的交互的相关资料.


最简单的方式是EventBus, 可选库:

  1. greenrobot/EventBus

  2. AndroidKnife/RxBus

  3. square/otto

其次就是LocalBroadcastManager, 参考资料:

  • Android Developer Reference # android.support.v4.content.LocalBroadcastManager

再次就是Fragment借助Activity来进行交互, 参考资料:

  1. Android Developer Guide # Communicating with Other Fragments

  2. Android Developer Guide # Fragment

最后就是直接通过TargetFragment来实现, 相关函数:

  1. Fragment#setTargetFragment(android.app.Fragment, int)

  2. Fragment#getTargetFragment()

  3. Fragment#getTargetRequestCode()


方法选定之后, 最后需要注意的是:

FragmentPagerAdapterFragmentStatePagerAdapter在管理Fragment时是有差别: 回收Fragment的处理是不同的. 因此, 需要考虑的是, 当Fragment

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:🎜
    🎜🎜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:🎜
🎜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 🎜 🎜
世界只因有你

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

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan