博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Fragment(碎片)的静态创建
阅读量:7011 次
发布时间:2019-06-28

本文共 4502 字,大约阅读时间需要 15 分钟。

hot3.png

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=""
    xmlns: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=""

    xmlns: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=""

    xmlns: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

你可能感兴趣的文章
使用jquery获取父元素或父节点的方法
查看>>
如何让双十一数据大屏讲出故事?设计有口诀
查看>>
浮窗系列之窗口与用户输入系统
查看>>
swing效果点击下拉框自动填充文本框
查看>>
UML之活动图
查看>>
Shiro的Demo示例
查看>>
RISC领域ARM不是唯一
查看>>
数据库容灾的最高境界
查看>>
spark命令
查看>>
mysql explain中的select tables optimized away---(二)
查看>>
安装PHP5和PHP7
查看>>
邹承鲁院士谈学术文献阅读
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
android模仿铃声选择功能
查看>>
我的友情链接
查看>>
配置DHCP服务器
查看>>
trim triml trimr
查看>>
我的友情链接
查看>>