为啥android fragment 不调用 oncreateview方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥android fragment 不调用 oncreateview方法相关的知识,希望对你有一定的参考价值。
想在通过3个按钮来在同一个页面框中切换3个界面,但中间的内容一个都显示不出来
参考技术A Fragment的onCreateView就是创建控件的方法1.Fragment是android3.0引入的新控件,果应用使用在3.0以下、1.6及以上的版本,需要引入v4包。2.Fragment支持在不同的Activity中使用并且可以处理自己的输入事件以及生命周期方法等。3.Fr期方法依赖于Activity的生命周期,例如一个Activity的onPause()的生命周期方法被调用的时候这个Activity中的所有的Fragment的onPause()方法也将被调用。4.FragmentManager提供了对Activity运行时的Fragment的添加、删除、替换的操作。在Activity运行期间可以添加Fragment而不是在XML布局文件中进行定义。如果打算在Activity中改变Fragment的生命过程。如果要执行添加、删除、修改的操作,必须通过FragmentManager的对象获得一个FragmentTransaction对象,通过它的API来执行这些操作。5.两个单独的Fragment之间是不应该进行通信的。应该使用他们所存在的Activity作为沟通的纽带。追问问题更正一下。。按钮换成textview。。界面框是viewpage。。做的是一个滑动的。。我是把它嵌在另一个界面中的,遇到这样问题有什么解决的办法吗?我如果去掉中间的跳转环节,直接显示是可以显示出来的
为啥显示Fragment1之前会调用Fragment2的onCreateView
、要使用Fragment1、我需要态界面切换候需要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升级
以上是关于为啥android fragment 不调用 oncreateview方法的主要内容,如果未能解决你的问题,请参考以下文章
Android:何时/为啥我应该使用 FrameLayout 而不是 Fragment?