Im Hauptfragment gibt es eine Symbolleiste mit einem ViewPager darunter und ein Fragment innerhalb des ViewPagers. Jetzt möchte ich die Schaltfläche in der Symbolleiste betätigen und die Daten im Fragment im ViewPager ändern. Gibt es eine gute Kommunikationsmethode?
题主所说如果只是Toolbar与Fragment的交互, 那就比较简单了:
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 之间要互通数据 可以用 EventBus
如果只是在操作 toolbar 切换fragment,加载 fragment 直接传入 数据