为啥显示Fragment1之前会调用Fragment2的onCreateView

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥显示Fragment1之前会调用Fragment2的onCreateView相关的知识,希望对你有一定的参考价值。

、要使用Fragment
1、我需要态界面切换候需要UI元素Activity融合模块2.3我般通各种Activity进行跳转实现界面跳转单界面态改变4.0或系统使用新特性便达效--Fragment类Fragment类似嵌套Activity定义自layout自命周期

2、 Fragment放Activity(所面讲类似嵌套Activity)类些Fragment进行配置适应同屏幕尺寸(比平板手机)

二、使用Fragment
1、Fragment activity 界面部或种行 Fragment 组合 activity 创建 面界面并且 activity 重用 Fragment Fragment 认模块化段 activity,具 自命周期,接收自事件,并 activity 运行添加或删除
2、Fragment 能独立存,必须嵌入 activity ,且 Fragment 命周期直接受所 activity 影 响
3、向 activity 添加 Fragment ,须置于 ViewGroup 控件,并且需定义 Fragment 自界面 layoutxml 文件声明 Fragment,元素:;代码创建 Fragment,加入 ViewGroup 控件,Fragment 定非要放 activity 界面,隐藏台 actvitiy 工作

三、 命周期
通, 应至少实现命周期:
onCreate()
创建fragment, 系统调用该.

实现代码,应初始化想要fragment保持必要组件, fragment暂停或者停止恢复.
onCreateView()
fragment第绘制用户界面候, 系统调用. 绘制fragmentUI,必须返View, viewfragment布局根view. fragment提供UI, 返null.

onPause()
用户要离fragment,系统调用作第指示(总意味着fragment销毁.) 前用户结束前,通应提交任何应该持久化变化(用户能返).
数程序应少 fragment 实现三其几调应该按情况实现
图 fragment 命周期(所 activity 处于运行状态)

四、何使用Fragment
1、添加用户界面
fragment通用作activity用户界面部,并layout提供给activity.给fragment提供 layout,必须实现 onCreateView()调, fragment绘制自layout候,android系统调用.实现代码必须返fragment layout根view.
onCreateView()返View, layoutxml资源文件读取并. 帮助做, onCreateView() 提供LayoutInflater 象.

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
View view = inflater.inflate(R.layout.frament_main, container, false);
return view;

PS
传入onCreateView()container参数fragmentlayout插入父ViewGroup(自activitylayout) savedInstanceState 参数Bundle, fragment恢复,提供关于fragment前实例数据,
inflate() 3参数:
a、想要加载layoutresource ID.
b、加载layout父ViewGroup.传入container重要, 目让系统接受所要加载layout根viewlayout参数,由挂靠父view指定.
c、布尔值指示加载期间, 展layout否应附着ViewGroup (第二参数).
2、fragment添加activity
通, fragment宿主activity提供UI部, 作activity整viewhierarchy部嵌入. 2种添加fragmentactivity layout:
2.1、使用XMLFragment添加Activity
种情况像View, fragment指定layout属性

<LinearLayout xmlns:android=""
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment android:name="com.example.news.ArticleListFragment"
android:id="@+id/list"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent" />
<fragment android:name="com.example.news.ArticleReaderFragment"
android:id="@+id/viewer"
android:layout_weight="2"
android:layout_width="0dp"
android:layout_height="match_parent" />

PS
1、 android:name属性指定layout实例化Fragment类.
系统创建activity layout,实例化每layout指定fragment,并调用每onCreateView(),获取每 fragmentlayout.系统fragment返 View直接插入元素所.
2、通xml定义fragment式我能运行移除fragment我想要通切换fragments跟用户更互需要activity启候定义fragment
2.2、运行添加FragmentActivity
面节activity布局文件(layout xml)添加Fragment我已经知道现我习另外种式种式允许我运行态显示隐藏fragment达activity态管理Fragment我需要用FragmentManager并且通创建FragmentTransaction

activity允许移除或者替换fragment需要条件:
1、activityonCreate()添加初始化fragment
2、fragment放置位置布局必须视图容器

<FrameLayout xmlns:android=""
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
Activity使用getSupportFragmentManager()获取FragmentManager调用beginTransaction创建FragmentTransaction象 再调用add()即添加fragment activity使用同FragmentTransaction象执行fragment事务做操作必须调用commint() 面代码演示添加fragmentres/layout/news_articles.xmllayout:
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;

public class MainActivity extends FragmentActivity
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.news_articles);

if (findViewById(R.id.fragment_container) != null)

if (savedInstanceState != null)
return;


HeadlinesFragment firstFragment = new HeadlinesFragment();

firstFragment.setArguments(getIntent().getExtras());

// Add the fragment to the 'fragment_container' FrameLayout
getSupportFragmentManager().beginTransaction()
.add(R.id.fragment_container, firstFragment).commit();



-
参考技术A 用iTunes引导iPhone升级

以上是关于为啥显示Fragment1之前会调用Fragment2的onCreateView的主要内容,如果未能解决你的问题,请参考以下文章

为啥在浏览器中调用和显示时存储在 localStorage 中的 HTML 会发生变化?

Fragmen直接来回切换deno

为啥“提交”按钮会显示在 <form> 之前?

FragmentContainerView 中未调用/显示 OnMapReady

为啥在循环内调用 publishProgress 并多次调用(没有循环)会显示不同的行为?

为啥 viewDidLoad 在 vi​​ewWillAppear 之前被调用? [复制]