Fragment(碎片)的静态创建

Fragment(碎片)的静态创建

214218_4IRB_2542711.png

 

什么是碎片?
    简单来说上图的左半边 就是一个碎片 右半边也是一个碎片 -- 基础阶段先这样理解
 
什么是静态创建碎片?
   就是在一个主Activity.xml文件布局里布局好fragment(碎片) -- 可以看成大容器的一个小布局
 
  注意:碎片类都要继承Fragment
  
   接下来实现上图界面布局 -- 碎片的静态创建
  
   1、在res/layout布局文件里有3个布局
       1 -- 一个activity_main.xml -- 用来放左边和右边的碎片
    2 -- 一个left_fragment.xml -- ListView -- 把数据绑到该ListView上
    然后在把该ListView 放到左边的碎片上
    3 -- 一个right_fragment.xml -- TextView -- 把TextView放到右边碎片上
activity_main.xml布局文件
代码
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >
<!-- name里 为 包名.类名 -->
<!--左边的碎片-->
    <fragment
        android:id="@+id/left_fragment"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:name="com.example.fragment_static.Left_fragment"/>
  <!--右边的碎片--> 
     <fragment
        android:id="@+id/right_fragment"
        android:layout_width="0dp"
        android:layout_weight="2"
        android:layout_height="wrap_content"
        android:name="com.example.fragment_static.Right_fragment" />
</LinearLayout>

------------------

left_fragment.xml布局文件
代码

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <ListView
        android:id="@+id/listview"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>
------------------
right_fragment布局文件

代码

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/right_textview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="右边fragment" />

</LinearLayout>

==================================

2、Left_fragment(左边碎片) 类名

代码

public class Left_fragment extends Fragment {

 private ArrayAdapter<String> adapter;
 private ListView listview;
 
 @Override//fragment被添加到宿主Activity时被回调 -- 紧回调一次
 public void onAttach(Activity activity) {
  super.onAttach(activity);
 }
 @Override//创建fragment时回调 -- 紧回调一次
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  //初始化 需要的数据
  String[] names = new String[20];
  for(int i = 0;i<20;i++){
   names[i] = "lala" + i;
  }
  
  adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, names);
 }
 //必须重写该方法
 @Override//每次创建 、绘制fragment时 都会调用该 方法 -- 调用多次
 public View onCreateView(LayoutInflater inflater, ViewGroup container,
   Bundle savedInstanceState) {
   
  View view = inflater.inflate(R.layout.left_fragment,container, false);
  listview = (ListView) view.findViewById(R.id.listview);
  listview.setAdapter(adapter);
  //返回一个ListView 布局视图到有该类 -- 包名.类名  的Fragment(碎片) 布局上
  return view;
 }
}
------------------

3、Right_fragment(碎片) 类

代码

public class Right_fragment extends Fragment {
 @Override
 public View onCreateView(LayoutInflater inflater, ViewGroup container,
   Bundle savedInstanceState) {
  View view = inflater.inflate(R.layout.right_fragment, container, false);
  //返回一个TextView到 右边的碎片上
  return view;
 }

-----------------

4、MainActivity 类

代码

public class MainActivity extends Activity {
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
 }
}

==============================================
  
  

 

Fragment生命周期:
(一)、Fragment基本状态:
1、活动状态:Resumed 当前Fragment位于前台,用户可见,可以获得焦点;
2、暂停状态: Paused 另一个Activity处于前台并拥有焦点, 但是该Fragment所在的Activity仍然可见(前台Activity局部透明或者没有覆 盖整个屏幕),不过不能获得焦点;

3、停止状态:Stopped

要么是宿主Activity已经被停止, 要么是Fragment从Activity被移除但被添加到回退栈中; 停止状态的Fragment仍然活着(所有状态和成员信息被系统保持着)。 然而, 它对用户不再可见, 并且如果Activity被销毁,它也会被销毁;

4、销毁状态:Destroyed 只能等待被回收。

(二)、Fragment生命周期:【重点】


1、onAttach(): 当该Fragment被添加到Activity时被回调。该方法只会被调用一次;

2、onCreate(): 当创建Fragment时被回调。该方法只会被调用一次;

3、onCreateView():每次创建、绘制该Fragment的View组件时回调该方法,Fragment将会显示该方法返回的View 组件;

4、onActivityCreated(): 当Fragment的宿主Activity被启动完成后回调该方法;

5、onStart(): 启动Fragment时被回调;

6、onResume(): onStart()方法后一定会回调onResume()方法;

7、onPause(): 暂停Fragment时被回调;

8、onStop(): 停止Fragment时被回调;

9、onDestroyView(): 销毁该Fragment所包含的View组件时调用;

10、onDestroy(): 销毁Fragment时被回调。该方法只会被调用一次;

11、onDetach(): 将Fragment从Activity中删除、替换完成时调用该方法。onDestroy()方法后一定会回调onDetach()方法。 该方法只会被调用一次。

12、onInflate():

13、onViewCreated():

【备注:】其中大多数程序必须实现Fragment的三个回调方法分别为:
onCreate :系统创建Fragments 时调用,可做执行初始化工作或者当程序被暂停或停止时用来恢复状态,跟Activity 中的onCreate相当。 onCreateView :用于首次绘制用户界面的回调方法,必须返回要创建的Fragment 视图UI。假如你不希望提供Fragment用户界面则可以 返回NULL。

onPause : 当用户离开这个Fragment的时候调用,这时你要提交任何应该持久的变化,因为用户可能不会回来。


  

转载于:https://my.oschina.net/u/2542711/blog/608475

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值