安卓开发:Fragment使用

安卓开发:Fragment使用,第1张

概述Fragment作为碎片,依托于Activity,类似于Activity,在开发中经常用到。由于Fragment依赖于Activity。所以Activity的生命周期直接影响附着于该Activity上的Fragment的生命周期。Activity函数动作与Fragment之间的关系Activity【动作】Fragment【回调】created onAttach()

Fragment作为碎片,依托于Activity,类似于Activity,在开发中经常用到。
由于Fragment依赖于Activity。所以Activity的生命周期直接影响附着于该Activity上的Fragment的生命周期。

Activity函数动作与Fragment之间的关系

Activity【动作】 Fragment【回调】created			onAttach()				onCreate()				onCreateVIEw()				onActivityCreated()-----------------------------------started			onStart()-----------------------------------resumed			onResumed()-----------------------------------paused			onPause()-----------------------------------stopped			onStop()-----------------------------------destroyed		onDestroyVIEw()				onDestroy()				onDetach()

onAttach():
与某Activity关联的时候调用

onCreate()和onCreateVIEw():
Fragment中的onCreate()函数用于为当前Fragment初始化除VIEw【布局文件】以外的属性,而onCreateVIEw()函数用于为当前Fragment创建相应的视图,并且onCreate()需要返回VIEw给调用者。所以也可以很好的理解onDestroyVIEw()函数和onDestroy()函数之间的区别了。

onActivityCreated():
当Activity调用了onCreate()函数后,会回调该方法。

onDetach():
当Activity与当前Fragment解除关联的时候调用。

在Activity中显示Fragment:
Fragment.xml:

<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"    androID:layout_wIDth="match_parent"    androID:layout_height="match_parent"    androID:orIEntation="vertical">    <TextVIEw        androID:layout_wIDth="match_parent"        androID:layout_height="match_parent"        androID:text="fragment" /></linearLayout>

activity_main.xml:

<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"    xmlns:tools="http://schemas.androID.com/tools"    androID:ID="@+ID/main"    androID:layout_wIDth="match_parent"    androID:layout_height="match_parent"    androID:orIEntation="vertical">    <fragment        androID:ID="@+ID/fragment"        androID:name="com.example.aIDen.myapplication.MyFragment"        androID:layout_wIDth="match_parent"        androID:layout_height="match_parent" /></linearLayout>

MyFragment.java:

package com.example.aIDen.myapplication;import androID.app.Fragment;import androID.os.Bundle;import androID.vIEw.LayoutInflater;import androID.vIEw.VIEw;import androID.vIEw.VIEwGroup;public class MyFragment extends Fragment {    @OverrIDe    public VIEw onCreateVIEw(LayoutInflater inflater, VIEwGroup container, Bundle savedInstanceState) {        return inflater.inflate(R.layout.fragment, container, false);    }}

MainActivity.java:

package com.example.aIDen.myapplication;import androID.app.Activity;import androID.os.Bundle;public class MainActivity extends Activity {    @OverrIDe    public voID onCreate(Bundle save) {        super.onCreate(save);        this.setContentVIEw(R.layout.activity_main);    }}

代码是平淡的,但是却出现了很多问题
如果在main_Activity.xml上增加一个按钮,为该按钮增加点击监听事件,点击按钮后,调用this.getFragmentManager().beginTransaction().remove(new MyFragment()).commit()是不会移除上面的MyFragment的。我们可以这么理解,由于是静态的,我们无法获取该Activity上的实例对象,所以无法移除。如果要移除,只能动态的增加MyFragment实例到Activity上,并且移除同一MyFragment实例,最后要调用commit()方法!

FragmentActivity和Fragment的区别:
FragmentActivity主要是解决API3.0之前没有出现Fragment类,但是要使用Fragment这个类出现的尴尬问题。我们只要把Activity继承自FragmentActivity即可,获取Fragment从getFragmentManager()变成了getSupportFragmentManager()

总结

以上是内存溢出为你收集整理的安卓开发:Fragment使用全部内容,希望文章能够帮你解决安卓开发:Fragment使用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1033321.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存