Android 嵌套Fragment的使用实例代码

Android 嵌套Fragment的使用实例代码,第1张

概述前言 之前的文章有介绍ActivityGroup,不少人问嵌套使用的问题,同样的需求在Fragment中也存在,幸好在最新的Androidsupport包已经支持这一特性!这里就跳过Fragment的介绍,需要注意的是TabActivity已经被标记

前言

  之前的文章有介绍ActivityGroup,不少人问嵌套使用的问题,同样的需求在Fragment中也存在,幸好在最新的AndroID support 包已经支持这一特性!这里就跳过Fragment的介绍,需要注意的是tabactivity已经被标记为弃用(deprecated)。

正文

 一、准备

  关于最新的AndroID兼容包的介绍,参见官网。可以在androID sdk目录下extras/androID/support/v13/androID-support-v13.jar找到最新版,注意是伴随着AndroID 4.2一起更新的。

  关于嵌套Fragment的介绍,参照官网。

二、截图

 三、代码

  FragmentnestActivity.java

import androID.graphics.color;import androID.os.Bundle;import androID.support.v4.app.Fragment;import androID.support.v4.app.FragmentActivity;import androID.support.v4.app.FragmentStatePagerAdapter;import androID.support.v4.app.FragmentTransaction;import androID.support.v4.vIEw.VIEwPager;import androID.vIEw.Gravity;import androID.vIEw.LayoutInflater;import androID.vIEw.VIEw;import androID.vIEw.VIEw.OnClickListener;import androID.vIEw.VIEwGroup;import androID.Widget.TextVIEw;/** * 嵌套Fragment使用 *  * @author 农民伯伯 * @see http://www.cnblogs.com/over140/archive/2013/01/02/2842227.HTML *  */public class FragmentnestActivity extends FragmentActivity implements OnClickListener {  @OverrIDe  protected voID onCreate(Bundle arg0) {    super.onCreate(arg0);    setContentVIEw(R.layout.nested_fragments);    findVIEwByID(R.ID.btnModule1).setonClickListener(this);    findVIEwByID(R.ID.btnModule2).setonClickListener(this);    findVIEwByID(R.ID.btnModule3).setonClickListener(this);    findVIEwByID(R.ID.btnModule1).performClick();  }  @OverrIDe  public voID onClick(VIEw v) {    switch (v.getID()) {    case R.ID.btnModule1:      addFragmentToStack(FragmentParent.newInstance(0));      break;    case R.ID.btnModule2:      addFragmentToStack(FragmentParent.newInstance(1));      break;    case R.ID.btnModule3:      addFragmentToStack(FragmentParent.newInstance(2));      break;    }  }  private voID addFragmentToStack(Fragment fragment) {    FragmentTransaction ft = getSupportFragmentManager().beginTransaction();    //    ft.setCustomAnimations(androID.R.anim.slIDe_in_left,androID.R.anim.slIDe_in_left);    ft.replace(R.ID.fragment_container,fragment);    ft.commit();  }  /** 嵌套Fragment */  public final static class FragmentParent extends Fragment {    public static final FragmentParent newInstance(int position) {      FragmentParent f = new FragmentParent();      Bundle args = new Bundle(2);      args.putInt("position",position);      f.setArguments(args);      return f;    }    @OverrIDe    public VIEw onCreateVIEw(LayoutInflater inflater,VIEwGroup container,Bundle savedInstanceState) {      VIEw convertVIEw = inflater.inflate(R.layout.vIEwpager_fragments,container,false);      VIEwPager pager = (VIEwPager) convertVIEw.findVIEwByID(R.ID.pager);      final int parent_position = getArguments().getInt("position");      //注意这里的代码      pager.setAdapter(new FragmentStatePagerAdapter(getChildFragmentManager()) {        @OverrIDe        public Fragment getItem(final int position) {          return new Fragment() {            @OverrIDe            public VIEw onCreateVIEw(LayoutInflater inflater,Bundle savedInstanceState) {              TextVIEw convertVIEw = new TextVIEw(getActivity());              convertVIEw.setLayoutParams(new VIEwGroup.LayoutParams(VIEwGroup.LayoutParams.FILL_PARENT,VIEwGroup.LayoutParams.FILL_PARENT));              convertVIEw.setGravity(Gravity.CENTER);              convertVIEw.setTextSize(30);              convertVIEw.setTextcolor(color.BLACK);              convertVIEw.setText("Page " + position);              return convertVIEw;            }          };        }        @OverrIDe        public int getCount() {          return 3;        }        @OverrIDe        public CharSequence getPageTitle(int position) {          return "Page " + parent_position + " - " + position;        }      });      return convertVIEw;    }  }}

代码说明:

    这里最关键的是方法getChildFragmentManager的支持。这里也演示了Fragment作为嵌套内部类的使用方法。

 nested_fragments.xml

<?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" >  <FrameLayout    androID:ID="@+ID/fragment_container"    androID:layout_wIDth="fill_parent"    androID:layout_height="0dip"    androID:layout_weight="1.0"    androID:background="#F7F5DE" >  </FrameLayout>  <linearLayout    androID:layout_wIDth="fill_parent"    androID:layout_height="wrap_content"    androID:layout_gravity="bottom"    androID:background="@androID:color/black"    androID:orIEntation="horizontal" >    <ImageVIEw      androID:ID="@+ID/btnModule1"      androID:layout_wIDth="wrap_content"      androID:layout_height="wrap_content"      androID:layout_marginBottom="3dp"      androID:layout_marginleft="7dp"      androID:layout_margintop="3dp"      androID:src="@androID:drawable/ic_dialog_dialer" />    <ImageVIEw      androID:ID="@+ID/btnModule2"      androID:layout_wIDth="wrap_content"      androID:layout_height="wrap_content"      androID:layout_marginBottom="3dp"      androID:layout_marginleft="7dp"      androID:layout_margintop="3dp"      androID:src="@androID:drawable/ic_dialog_info" />    <ImageVIEw      androID:ID="@+ID/btnModule3"      androID:layout_wIDth="wrap_content"      androID:layout_height="wrap_content"      androID:layout_marginBottom="3dp"      androID:layout_marginleft="7dp"      androID:layout_margintop="3dp"      androID:src="@androID:drawable/ic_dialog_alert" />  </linearLayout></linearLayout>

vIEwpager_fragments.xml

<?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.support.v4.vIEw.VIEwPager    androID:ID="@+ID/pager"    androID:layout_wIDth="match_parent"    androID:layout_height="match_parent" >    <androID.support.v4.vIEw.PagerTitleStrip      androID:layout_wIDth="wrap_content"      androID:layout_height="wrap_content"      androID:layout_gravity="top" />  </androID.support.v4.vIEw.VIEwPager></linearLayout>

代码说明:

   注意!实践发现VIEwPager并不能作为顶层容器,否则会报错。

 四、说明

  这是一个典型的嵌套Fragment的例子,最外层使用FrameLayout来实现几大模块的切换,内部使用VIEwPager实现子模块的切换,非常实用。

结束

 考虑把Support Package,revision 11 更新翻译一下,强烈建议大家升级到最新的兼容包。

总结

以上是内存溢出为你收集整理的Android 嵌套Fragment的使用实例代码全部内容,希望文章能够帮你解决Android 嵌套Fragment的使用实例代码所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1141696.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存