ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

学习笔记Android(二)Fragment

2021-10-05 12:34:01  阅读:152  来源: 互联网

标签:生命周期 layout Fragment Activity 笔记 fragment activity Android


Fragment:

Fragemnt的出现就是因为屏幕变大(例如平板出现

 

2个不同活动界面手机需要2个activity显示但平板要显示在一个activity上),设计者想尽可能利用当前页面显示更多信息所以将一个activity界面又分为多个有生命周期回调函数的fragment。Fragment像是个小activity子activity,也有生命周期需要依附于activity存在所以其生命周期会受所依附的activity生命周期的影响。一个activity里可以有多个fragment,一个fragment也可以用于多个activity。

Fragment生命周期回调函数:

create前先绑定,destroy后再解绑

onAttach(Activity) //当Fragment与Activity发生关联时调用。从该方法开始,就可以通过 Fragment.getActivity方法获取与Fragment关联的窗口对象了,但在该方法中仍然无法操作Fragment中的控 件。

onCreateView(LayoutInflater, ViewGroup, Bundle)//创建该Fragment的视图。

onActivityCreated(Bundle)//当Activity的onCreate方法返回时调用。

onDestoryView()//与onCreateView相对应,当该Fragment的视图被移除时调用。

onDetach()//与onAttach相对应,当Fragment与Activity关联被取消时调用

静态使用fragment:

直接新建fragment文件(继承fragment必须至少重写有oncreate和onCreateView),调整对应layout。然后在activity的layoutxml文件内添加fragment组件并在其android:name项指定哪个fragment即可。

动态使用fragment:

这个才是fragment的强大之处,先把mainactivity的layoutxml文件中的fragment引用去掉,只留下最外层linearlayout层,并对此layout添加id。然后可以在activity.java文件内直接对此layout动态添加或替换成Fragment.

Mainactivity.java:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Display display = getWindowManager().getDefaultDisplay();//获得屏幕显示
    if(display.getWidth()>display.getHeight())
    {

        getFragmentManager().beginTransaction().replace(R.id.main_layout,new   Fragment1()).commit();
    }else {

        getFragmentManager().beginTransaction().replace(R.id.main_layout,new Fragment2()).commit();
    }
}

报错Fragment1无法转换为Fragment:明明已经extends了,这种一般就是版本错误,方法内所需的fragment的版本和你继承的不同(看报错信息更改Fragment1所继承的版本即可)。

Fragment之间通信:

Fragment和Fragment之间的 通讯的桥梁就是这个FragmentManager这个类,这个类是用来管理所有的这个Fragment的,所以可以 找到任何一个所需要的Fragment类。

实际操作来说的话应该是在一个fragment中使用getActivity获得当前运行的上下文环境再.findViewById获得同一个Activity下不同Fragment内的组件信息。

例如:在fragment2内使用:

TextView textView = (TextView)getActivity().findViewById(R.id.f1textView);获取fragment1的textview。

 

标签:生命周期,layout,Fragment,Activity,笔记,fragment,activity,Android
来源: https://blog.csdn.net/qq_40809198/article/details/120612674

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有