Rumah > Soal Jawab > teks badan
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?
为情所困2017-05-16 13:23:02
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)
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()
方法选定之后, 最后需要注意的是:
FragmentPagerAdapter
和FragmentStatePagerAdapter
在管理Fragment
时是有差别: 回收Fragment
的处理是不同的. 因此, 需要考虑的是, 当Fragment
Fragment
adalah sama seperti Activity, seperti yang ditunjukkan dalam rajah di bawah:🎜FragmentPagerAdapter
danFragmentStatePagerAdapter
adalah berbeza apabila menguruskanFragment
: pemprosesan kitar semulaFragment
adalah berbeza , apa yang perlu dipertimbangkan ialah bagaimana Apl harus mengendalikan (menyimpan & memulihkan) perhubungan interaktif antara Fragmen yang disebut dalam soalan apabilaFragmen dikitar semula dan muncul pada skrin semula 🎜 🎜 balas0
世界只因有你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