android复习路之fragment篇

来源:互联网 发布:php url encode 在线 编辑:程序博客网 时间:2024/05/16 03:24

1.fragment的生命周期必须依附于activity:


                              

2.fragment依附于activity的的生命周期图:


3.fragment各个函数的用法:

3.1 on attach:与窗口关联后就可以调用,可以通过Fragment.getActivity方法获取窗口,但fragment没有初始化不能进行操作。

3.2 oncreate:可以从bundle中获得数据,不要进行耗时操作,不然无法加载窗口。

3.3 oncreateview:用来在fragment中装载view视图。

3.4 onviewcreated:创建完窗口后activity立刻回掉该方法。

3.5 onactivitycreated:activity执行完on create方法之后,系统立马调用该方法。表示窗口已经初始化完成,从这一个时候开始,就可以在Fragment中使用getActivity().findViewById(Id);来操控Activity中的view了。

3.6 onstart:fragment已经显示在ui 但是不可以进行交互

3.7 onresume:fragment可以进行交互了

3.8 onpause:活跃到非活跃的第一个函数,进行数据保存。

3.9 ondestroyview:oncreateview创建的视图全部被移除

3.10 ondestroy:activity还可以获得fragment的对象但是无法操作。

3.11ondetached:死亡

4.Fragment中的主要的操作函数:

        FragmentTransactiontransaction= fm.benginTransatcion();//开启一个事务

transaction.add()        //往Activity中添加一个Fragment        transaction.remove()        //从Activity中移除一个Fragment,如果被移除的Fragment没有添加到回退栈(回退栈后面会详细说),这个Fragment实例将会被销毁。        transaction.replace()        //使用另一个Fragment替换当前的,实际上就是remove()然后add()的合体~        transaction.hide()        //隐藏当前的Fragment,仅仅是设为不可见,并不会销毁        transaction.show()        //显示之前隐藏的Fragment        detach()        //当fragment被加入到回退栈的时候,该方法与*remove()*的作用是相同的,        //反之,该方法只是将fragment从视图中移除,        //之后仍然可以通过*attach()*方法重新使用fragment,        //而调用了*remove()*方法之后,        //不仅将Fragment从视图中移除,fragment还将不再可用。        attach()        //重建view视图,附加到UI上并显示。        transatcion.commit()//提交一个事务

5.例子:创建一个fragment并且在activity中加载

fragment代码:

public class aFragment extends Fragment {    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {        return inflater.inflate(R.layout.fragmentlayout, container, false);    }}
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:id="@+id/afragment"    android:orientation="vertical"    >    <TextView        android:text="TextView"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:id="@+id/textView"        android:background="#ff00ff"        /></LinearLayout>
main代码:

public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        aFragment fragment1=new  aFragment();        getFragmentManager().beginTransaction().replace(R.id.content,fragment1).commit();        getFragmentManager().beginTransaction().show(fragment1);    }}
main的xml:

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/activity_main"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="com.example.zobject.fragement.MainActivity">
<FrameLayout    android:id="@+id/content"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:layout_alignParentTop="true"    android:layout_alignParentLeft="true"    android:layout_alignParentStart="true"    android:layout_marginLeft="13dp"    android:layout_marginStart="13dp"    android:layout_marginTop="175dp"    android:background="#fff000"    >
</RelativeLayout>
效果图:


0 0
原创粉丝点击