android fragment多窗口怎么使用

 我来答
微博honey_11
2016-12-05 · TA获得超过191个赞
知道小有建树答主
回答量:304
采纳率:100%
帮助的人:329万
展开全部

、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 copy print?

<?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>  

<?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 copy print?

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;  

    }  

}  

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 copy print?

<?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>  

<?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 copy print?

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);  

    }  

  

}  

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 copy print?

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);  

    }  

  

}  

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 copy print?

<RelativeLayout 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" >  

  

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

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式