Rumah  >  Soal Jawab  >  teks badan

android - masalah komunikasi antara dua serpihan dalam ViewPage dalam serpihan

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中文网2713 hari yang lalu634

membalas semua(2)saya akan balas

  • 为情所困

    为情所困2017-05-16 13:23:02

    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:🎜 🎜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 🎜 🎜

    balas
    0
  • 世界只因有你

    世界只因有你2017-05-16 13:23:02

    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

    balas
    0
  • Batalbalas