Android Fragments

Android Fragments

Android Fragment 是活动的一部分,也被称为子活动。一个活动中可以有多个片段。片段代表一个活动内的多个屏幕。

Android片段的生命周期受到活动生命周期的影响,因为片段包含在活动中。

每个片段都有自己的生命周期方法,受到活动生命周期的影响,因为片段嵌入在活动中。

FragmentManager 类负责处理片段对象之间的交互。

Android Fragment生命周期

Android片段的生命周期类似于活动的生命周期。片段有12个生命周期方法。

Android Fragments

Android Fragment生命周期方法

No. 方法 描述
1 onAttach(Activity) 当与活动相关联时,它仅调用一次。
2 onCreate(Bundle) 用于初始化片段。
3 onCreateView(LayoutInflater, ViewGroup, Bundle) 创建并返回视图层次结构。
4 onActivityCreated(Bundle) 在onCreate()方法完成后调用。
5 onViewStateRestored(Bundle) 提供有关片段视图层次结构的所有保存状态已被恢复的信息。
6 onStart() 使片段可见。
7 onResume() 使片段可交互。
8 onPause() 当片段不再可交互时调用。
9 onStop() 当片段不再可见时调用。
10 onDestroyView() 允许片段清理资源。
11 onDestroy() 允许片段对片段状态进行最终清理。
12 onDetach() 在片段不再与其活动关联时立即调用。

Android Fragment Example

让我们来看一个简单的Android Fragment示例。

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    xmlns:app="http://schemas.android.com/apk/res-auto"  
    xmlns:tools="http://schemas.android.com/tools"  
    android:layout_width="fill_parent"  
    android:layout_height="fill_parent"  
    tools:context="example.javatpoint.com.fragmentexample.MainActivity">  

    <fragment  
        android:id="@+id/fragment1"  
        android:name="example.javatpoint.com.fragmentexample.Fragment1"  
        android:layout_width="0px"  
        android:layout_height="match_parent"  
        android:layout_weight="1"  
        />  

    <fragment  
        android:id="@+id/fragment2"  
        android:name="example.javatpoint.com.fragmentexample.Fragment2"  
        android:layout_width="0px"  
        android:layout_height="match_parent"  
        android:layout_weight="1"  
        />  

</LinearLayout>  

fragment_fragment1.xml

<FrameLayout 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:background="#F5F5DC"  
    tools:context="example.javatpoint.com.fragmentexample.Fragment1">  

    <!-- TODO: Update blank fragment layout -->  
    <TextView  
        android:layout_width="match_parent"  
        android:layout_height="match_parent"  
        android:text="@string/hello_blank_fragment" />  

</FrameLayout>  

fragment_fragment2.xml

<FrameLayout 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:background="#F0FFFF"  
    tools:context="example.javatpoint.com.fragmentexample.Fragment2">  

    <!-- TODO: Update blank fragment layout -->  
    <TextView  
        android:layout_width="match_parent"  
        android:layout_height="match_parent"  
        android:text="@string/hello_blank_fragment" />  

</FrameLayout>  

MainActivity类

package example.javatpoint.com.fragmentexample;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}
package example.javatpoint.com.fragmentexample;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class Fragment1 extends Fragment {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_fragment1, container, false);
    }
 }
package example.javatpoint.com.fragmentexample;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class Fragment2 extends Fragment {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_fragment2, container, false);
    }

}

输出:

Android Fragments

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程