**
1.Fragment和Activity的相互通信2
**
(1)Fragment和Activity互相获取组件
(1.1)Fragment获取Activity的组件
(1.2)Activity获取Fragment的组件
【案例】Activity获取Fragment:Activity中含有一个Button,点击后获取Fragment中TextView的内容。
关键的方式fragment提供了一个getView()获取Fragment对应的视图。
fragment_a.xml
AFragment.java
activity_main.xml
MainActivity.java
效果:
(2.2)Fragment传递数据给Activity
【案例】数据由Fragment产生,点击Fragment中的按钮,将数据传递给Activity
fragment_c.xml
activity_main4.xml
CFragment.java
MainActivity4.java
效果:
1.使用FragmentTabHost实现底部导航
使用场景:
微信:聊天、联系人、朋友圈、我的;
今日头条:新闻、视频、我的
支付宝:首页、口碑、生活、我的等等。
FragmentTabHost是一个容器级别控件,只能作为根节点,需要强制指定相关的id。
【案例】使用FragmentTabHost实现底部导航
思考:
如何加载多个底部选项?
底部选项是一个上图下字,需要创建一个布局模板。
步骤:
(1)设置fragmentTabhost
(2)创建内容区域FrameLayout
(3)创建TabWidget
(4)创建选项卡对应的布局模板tab_item.xml
(5)创建3个fragment
(6)将FragmentTabHost与内容区域绑定
(7)创建TabWidget对应的tabs,并且将fragment与tab对应起来。
1.FragmentTabHost的事件
导航切换事件
fragmentTabHost.setOnTabChangedListener(new TabHost.OnTabChangeListener() {
@Override
public void onTabChanged(String tabId) {
//参数表示选项卡的id
}
});
作用:在切换导航时,可以观察到导航序号
【案例】选中时点亮图标。
注意:
(1)点亮当前,关闭其他图标(图标变暗)。
(2)第一个选项默认是点亮状态
项目结构:
修改MainActivity.java,添加相关事件:
效果:
2.使用TabLayout和ViewPager2模拟FragmentTabHost
步骤:
(1)设置布局:上面是ViewPager2,下面是TabLayout
(2)为TabLayout设置选项卡(动态产生)
(3)为ViewPager2设置ViewHolder和Adapter
(4)将TabLayout和ViewPager2关联起来
项目结构:
activity_main2.xml
page_item.xml
MyAdapter.java
MainActivity2.java
效果:
【注意】修改TabLayout样式
效果:
代码以图片形式给大家参考和学习一下下,希望大家可以自己操作打一遍,这样理解后手不会生了!
么么叽么么叽么么哒!