导航:首页 > 使用方法 > fragment的使用方法

fragment的使用方法

发布时间:2022-07-08 12:02:06

❶ android fragment多窗口怎么使用

、Fragment的产生与介绍

关于fragment的实例,请参考android学习手册,android学习手册包含9个章节,108个例子,源码文档随便看,例子都是可交互,可运行,

源码采用android studio目录结构,高亮显示代码,文档都采用文档结构图显示,可以快速定位。360手机助手中下载,图标上有贝壳。

Android运行在各种各样的设备中,有小屏幕的手机,超大屏的平板甚至电视。针对屏幕尺寸的差距,很多情况下,都是先针对手机开发一套App,然后拷贝一份,修改布局以适应平板神马超级大屏的。难道无法做到一个App可以同时适应手机和平板么,当然了,必须有啊。Fragment的出现就是为了解决这样的问题。你可以把Fragment当成Activity的一个界面的一个组成部分,甚至Activity的界面可以完全有不同的Fragment组成,更帅气的是Fragment拥有自己的生命周期和接收、处理用户的事件,这样就不必在Activity写一堆控件的事件处理的代码了。更为重要的是,你可以动态的添加、替换和移除某个Fragment。

2、Fragment的生命周期


Fragment必须是依存与Activity而存在的,因此Activity的生命周期会直接影响到Fragment的生命周期。官网这张图很好的说明了两者生命周期的关系:


可以看到Fragment比Activity多了几个额外的生命周期回调方法:
onAttach(Activity)
当Fragment与Activity发生关联时调用。
onCreateView(LayoutInflater, ViewGroup,Bundle)
创建该Fragment的视图
onActivityCreated(Bundle)
当Activity的onCreate方法返回时调用
onDestoryView()
与onCreateView想对应,当该Fragment的视图被移除时调用
onDetach()
与onAttach相对应,当Fragment与Activity关联被取消时调用
注意:除了onCreateView,其他的所有方法如果你重写了,必须调用父类对于该方法的实现,

3、静态的使用Fragment

嘿嘿,终于到使用的时刻了~~

这是使用Fragment最简单的一种方式,把Fragment当成普通的控件,直接写在Activity的布局文件中。步骤:

1、继承Fragment,重写onCreateView决定Fragemnt的布局

2、在Activity中声明此Fragment,就当和普通的View一样

下面展示一个例子(我使用2个Fragment作为Activity的布局,一个Fragment用于标题布局,一个Fragment用于内容布局):

TitleFragment的布局文件:


[html] view plain print?

<?xmlversion="1.0"encoding="utf-8"?>

<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="45dp"

android:background="@drawable/title_bar">

<ImageButton

android:id="@+id/id_title_left_btn"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerVertical="true"

android:layout_marginLeft="3dp"

android:background="@drawable/showleft_selector"/>

<TextView

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:gravity="center"

android:text="我不是微信"

android:textColor="#fff"

android:textSize="20sp"

android:textStyle="bold"/>

</RelativeLayout>

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="45dp"
android:background="@drawable/title_bar" >

<ImageButton
android:id="@+id/id_title_left_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="3dp"
android:background="@drawable/showleft_selector" />

<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:text="我不是微信"
android:textColor="#fff"
android:textSize="20sp"
android:textStyle="bold" />

</RelativeLayout>

TitleFragment



[java] view plain print?

packagecom.zhy.zhy_fragments;

importandroid.app.Fragment;

importandroid.os.Bundle;

importandroid.view.LayoutInflater;

importandroid.view.View;

importandroid.view.View.OnClickListener;

importandroid.view.ViewGroup;

importandroid.widget.ImageButton;

importandroid.widget.Toast;

{

privateImageButtonmLeftMenu;

@Override

publicViewonCreateView(LayoutInflaterinflater,ViewGroupcontainer,

BundlesavedInstanceState)

{

Viewview=inflater.inflate(R.layout.fragment_title,container,false);

mLeftMenu=(ImageButton)view.findViewById(R.id.id_title_left_btn);

mLeftMenu.setOnClickListener(newOnClickListener()

{

@Override

publicvoidonClick(Viewv)

{

Toast.makeText(getActivity(),

"!",

Toast.LENGTH_SHORT).show();

}

});

returnview;

}

}

package com.zhy.zhy_fragments;

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ImageButton;
import android.widget.Toast;

public class TitleFragment extends Fragment
{

private ImageButton mLeftMenu;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
View view = inflater.inflate(R.layout.fragment_title, container, false);
mLeftMenu = (ImageButton) view.findViewById(R.id.id_title_left_btn);
mLeftMenu.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
Toast.makeText(getActivity(),
"i am an ImageButton in TitleFragment ! ",
Toast.LENGTH_SHORT).show();
}
});
return view;
}
}


同理还有ContentFragment的其布局文件:



[html] view plain print?

<?xmlversion="1.0"encoding="utf-8"?>

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical">

<TextView

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:gravity="center"

android:text="使用Fragment做主面板"

android:textSize="20sp"

android:textStyle="bold"/>

</LinearLayout>

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:text="使用Fragment做主面板"
android:textSize="20sp"
android:textStyle="bold" />

</LinearLayout>

[java] view plain print?

packagecom.zhy.zhy_fragments;

importandroid.app.Fragment;

importandroid.os.Bundle;

importandroid.view.LayoutInflater;

importandroid.view.View;

importandroid.view.ViewGroup;

{

@Override

publicViewonCreateView(LayoutInflaterinflater,ViewGroupcontainer,

BundlesavedInstanceState)

{

returninflater.inflate(R.layout.fragment_content,container,false);

}

}

package com.zhy.zhy_fragments;

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

public class ContentFragment extends Fragment
{

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
return inflater.inflate(R.layout.fragment_content, container, false);
}

}


MainActivity



[java] view plain print?

packagecom.zhy.zhy_fragments;

importandroid.app.Activity;

importandroid.os.Bundle;

importandroid.view.Window;

{

@Override

protectedvoidonCreate(BundlesavedInstanceState)

{

super.onCreate(savedInstanceState);

requestWindowFeature(Window.FEATURE_NO_TITLE);

setContentView(R.layout.activity_main);

}

}

package com.zhy.zhy_fragments;

import android.app.Activity;
import android.os.Bundle;
import android.view.Window;

public class MainActivity extends Activity
{

@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
}

}


Activity的布局文件:



[java] view plain print?

<RelativeLayoutxmlns: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">

<fragment

android:id="@+id/id_fragment_title"

android:name="com.zhy.zhy_fragments.TitleFragment"

android:layout_width="fill_parent"

android:layout_height="45dp"/>

<fragment

android:layout_below="@id/id_fragment_title"

android:id="@+id/id_fragment_content"

android:name="com.zhy.zhy_fragments.ContentFragment"

android:layout_width="fill_parent"

android:layout_height="fill_parent"/>

</RelativeLayout>

❷ 简述Fragment的作用

Fragment 是什么

今天我们来学习一个比较重要的组件--Fragment。Fragment在应用开发中应用得非常的频繁,特别是在开发一些需要兼容手机设备、平板设备和智能电视等大屏幕设备的应用,Fragment发挥着重要的作用。那说了这么多,Fragment到底是什么呢?在这里我们先简单的用一句话总结就是:Fragment是Android为了应用适配不同设备的大屏幕、支持更加动态和灵活的UI设计所提供的一个组件。
说到Fragment,就会联想到Activity,因为Fragment对象在应用中一般是不能独立存在的,它必须嵌入到activity中,而且Fragment的生命周期直接受所在的activity的影响。例如:当activity暂停时,他拥有的所有的Fragment都暂停了,当activity销毁时,他拥有的所有Fragment都被销毁。然而,当activity运行时(在onResume()之后,onPause()之前),可以单独地操作每个Fragment,比如添加或删除它们。当中执行上述针对Fragment的事务时,可以将事务添加到一个栈中,这个栈被activity管理,栈中的每一条都是一个Fragment的一次事务。有了这个栈,就可以反向执行Fragment的事务,这样就可以在Fragment级支持“返回”键(向后导航)。
当向activity中添加一个Fragment时,它须置于ViewGroup控件中,并且需定义Fragment自己的界面。可以在layout.xml布局文件中声明Fragment,元素为:<fragment>;也可以在代码中创建Fragment,然后把它加入到ViewGroup控件中。然而,Fragment不一定非要放在activity的界面中,它可以隐藏在后台为activity工作。

Android在3.0之后引入了Fragment的概念,主要目的是用在大屏幕设备-例如平板电脑上,以便支持更加动态和灵活的UI设计。平板电脑的屏幕尺寸比手机大得多,因此有更多的空间来存放更多的UI组件,并且这些组件之间会产生更多的交互。Fragment允许这样的一种设计,而不需要你亲自来管理viewhierarchy的复杂变化。通过将Activity的布局分散到Fragment中,你可以在运行时修改Activity的外观,并在由Activity管理的Back
stack中保存那些变化。

例如,一个新闻应用可以在屏幕的左侧使用一个Fragment来展示一个文章的列表,然后在屏幕右侧使用另一个Fragment来展示一篇文章,两个Fragment并排显示在相同的一个Activity中,并且每一个Fragment拥有它自己的一套生命周期回调方法,并且处理它们自己的用户输入事件。因此,取代使用一个activity来选择一篇文章而另一个activity来阅读文章的方式,用户可以在同一个activity中选择一篇文章并且阅读,如图所示

详细

❸ android 怎么使用fragment里面的控件

一、第一种方法:

(1)Fragment的第一种使用方法是使用fragment加载单独的布局文件:(也就是xml的方式实现

)activity_main.xml主要是在一个线性布局中添加两个线性布局

< "http://www.codingke.com" target="_blank"
class="keylink">vcD4KPHA+PHByZSBjbGFzcz0="brush:java;">

right.xml是等会使用fragment的时候,加载的一个布局文件:(由于主要是在界面中加载、所以不作特殊要求)

MyFragment.java就是加载fragment的类,要继承Fragment类:(要重载父类的下边三个方法)

二、第二种方法

项目结构和上图中的差不多:只是在布局文件中,直接使用fragment控件。

在myfragment.java文件中,只需找到fragment所容纳的布局文件即可,不进行业务上的操作。

MainActivity.java文件:进行fragment的业务处理,想了解更多请关注扣丁学堂。

❹ 怎么调用fragment的private方法

怎么在一个fragment or 任意类中操作另一个fragment中的方法
www.MyException.Cn 网友分享于:2014-04-20 浏览:100次

如何在一个fragment or 任意类中操作另一个fragment中的方法

1 如何在acitivty中执行fragment中的方法:
首先获得这个Fragment的对象

xxxFragment fragmentObject = (xxxFragment) getFragmentManager.findFragmentByTag("xx");

2 如何在Fragment中执行activity中的方法:
第一种:让acitivity继承接口
第二种:在fragment中使用getActivity()但是要加上acitivity的名字,即:

((MainActivity)getActivity()).xxx();

3 如果在fragment中要操作一个fragment,首要要得到这个对象,如何得到?使用getActivity中的FragmentMnager的getFragmentByTag,然后就可以使用这个fragment的对象来操作他的方法了。
当然获得这个Fragment的时候要转成这个Fragment的一个对象eg:

FragmentManager fm = getActivity.getSupportFragmentManager();

xxxFragment = (xxxFragment)fm.findFragmentByTag("xxx")

4 如何在任意类中操作一个fragment,首先要得到环境参数,如何得到?
在activity中:

private static WeakReference<ActionButtonActivity> actionButtonActivty = null;
actionButtonActivty = new WeakReference<ActionButtonActivity>(this);
从activity中将这个actionButtonActivity对象传递到这个任意类中

asyncTask.setActivity(actionButtonActivty);
在任意类中:

private static WeakReference<ActionButtonActivity> actionButtonActivty; public void setActivity(
WeakReference<ActionButtonActivity> actionButtonActivty) {
this.actionButtonActivty = actionButtonActivty;
}

/**
* this method is invoked on the UI thread after the background computation
* finishes. The result of the background computation is passed to this step
* as a parameter.
*/
@Override
protected void onPostExecute(Bitmap result) {
super.onPostExecute(result);

FragmentManager fm = actionButtonActivty.get().getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
BFragmentTab_one_event_details bt_det = (BFragmentTab_one_event_details) fm
.findFragmentByTag("2_det");
bt_det.setEvidenceImage(result);
bt_det.setButtonClickable();
ft.addToBackStack(null).commit();

}

❺ 如何使用Fragment与数据绑定

fragment可以在xml中添加,也可以直接新建ListViewFragemnt extends Fragment ,在这种方法的OnCreateView方法中,使用layoutinflator加载xml文件View,返回View,然后就是根据View去初始化ListView,数据直接从数据库取出,在适配器Adapter中更新显示数据。

❻ 如何使用fragment加载百度地图

直接在Fragment中定义BaiMap即可。
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作为沟通的纽带。

❼ Fragment详解

Fragment是android3.0引入的新控件,如果项目本身就是4.0以上的话,那么可以直接引用app包下的,FragmentPagerAdapter是ViewPager的适配器。

  1. Fragment是android3.0引入的新控件,果应用使用在3.0以下、1.6及以上的版本,需要引入v4包。

  2. Fragment支持在不同的Activity中使用并且可以处理自己的输入事件以及生命周期方法等。

  3. Fragment的生命周期方法依赖于Activity的生命周期,例如一个Activity的onPause()的生命周期方法被调用的时候这个Activity中的所有的Fragment的onPause()方法也将被调用。

  4. FragmentManager提供了对Activity运行时的Fragment的添加、删除、替换的操作。在Activity运行期间可以添加Fragment而不是在XML布局文件中进行定义。如果打算在Activity中改变Fragment的生命过程。如果要执行添加、删除、修改的操作,必须通过FragmentManager的对象获得一个FragmentTransaction对象,通过它的API来执行这些操作。

阅读全文

与fragment的使用方法相关的资料

热点内容
福腾宝炒锅使用方法 浏览:860
如何学好拼读的方法 浏览:83
汽轮机支撑瓦测量方法 浏览:959
大型手工飞机制作方法及图片 浏览:603
基准测量方法和技巧 浏览:383
虱虫一扫光使用方法 浏览:972
如何找鬼最灵验的方法 浏览:308
对开式法兰安装方法 浏览:136
万用表测量漏电方法视频观看 浏览:506
电脑免费提速方法 浏览:386
三焦不通该如何调简单方法教给你 浏览:112
腿悬空早上酸痛有什么方法 浏览:216
释放电脑空间的方法 浏览:727
门窗洞的绘制方法有哪些 浏览:260
工笔生宣的方法和技巧 浏览:760
全身皮肤过敏治疗方法 浏览:276
28岁脑梗塞的最佳治疗方法 浏览:639
控制性规划计算方法 浏览:272
简单不脱妆的方法 浏览:776
红豆杉果实的正确食用方法 浏览:559