热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

AndroidFragment使用之实例演示

本文主要介绍AndroidFragment的知识,这里整理了详细资料及简单示例代码,有需要的朋友可以参考下

          Fragment是Android honeycomb 3.0新增的概念,在如何使用Android Fragment中做了关于Fragment的详细介绍。本文则主要是通过实例的方式让大家更直观的了解Fragment的使用方法。

       首先贴上实例的运行效果截图:

       效果图的左边是一个列表,右边是列表item的详情。

       先看一下布局文件(layout):

XML/HTML代码

<&#63;xml version=“1.0″ encoding=“utf-8″&#63;> 
 
   
   
 

       布局文件中使用了fragment标签和FrameLayout标签。如何使用Android Fragment中介绍了两中嵌入Fragment的方法,这个实例中都用到,从布局文件看到有了fragment标签,这是一种使用方法,FrameLayout标签将会成为第二种加载fragment的载体view。

       看一下程序实现(com.fragment.main.TitlesFragment):

Java代码

public class TitlesFragment extends ListFragment {  
  
  int mCurCheckPosition = 0;  
  int mShownCheckPosition = -1;  
  
  @Override 
  public void onActivityCreated(Bundle savedInstanceState) {  
    super.onActivityCreated(savedInstanceState);  
                              
    setListAdapter(new ArrayAdapter(getActivity(),  
        android.R.layout.simple_list_item_activated_1,  
        Shakespeare.TITLES)); //使用静态数组填充列表  
    if (savedInstanceState != null) {  
      mCurCheckPosition = savedInstanceState.getInt(“curChoice”, 0);  
      mShownCheckPosition = savedInstanceState.getInt(“shownChoice”, -1);  
    }  
      getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);  
      showDetails(mCurCheckPosition);  
  }  
  
  @Override 
  public void onSaveInstanceState(Bundle outState) {  
    super.onSaveInstanceState(outState);  
  
    outState.putInt(“curChoice”, mCurCheckPosition);  
    outState.putInt(“shownChoice”, mShownCheckPosition);  
  }  
  
  @Override 
  public void onListItemClick(ListView l, View v, int position, long id) {  
    showDetails(position);  
  }  
  
  /** 
   *显示listview item 详情 
   */ 
  void showDetails(int index) {  
    mCurCheckPosition = index;  
      getListView().setItemChecked(index, true);  
  
      if (mShownCheckPosition != mCurCheckPosition) {  
  
        DetailsFragment df = DetailsFragment.newInstance(index);  
         FragmentTransaction ft = getFragmentManager()  
            .beginTransaction();  
        ft.replace(R.id.details, df);  
        ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);  
        ft.commit();  
        mShownCheckPosition = index;  
      }    
  }  
  
} 

       TitlesFragment继承自Fragment的子类ListFragment,使用了一个静态数组填充列表,重写了onListItemClick方法,showDetails方法展示ListView item的详情。

Java代码

DetailsFragment df = DetailsFragment.newInstance(index);//获取详情Fragment的实例  
FragmentTransaction ft = getFragmentManager().beginTransaction();//获取FragmentTransaction 实例  
ft.replace(R.id.details, df); //使用DetailsFragment 的实例  
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);  
ft.commit();//提交 

       这里就使用到了Android Fragment使用中介绍的第二种加载fragment的方法。看一下DetailsFragment :

Java代码

public class DetailsFragment extends Fragment {  
  
  /**   * Create a new instance of DetailsFragment, initialized to   * show the text at 'index'.   */ 
  public static DetailsFragment newInstance(int index) {  
    DetailsFragment f = new DetailsFragment();  
    // Supply index input as an argument.      
    Bundle args = new Bundle();  
    args.putInt(“index”, index);  
    f.setArguments(args);  
    return f;  
  }  
  
  @Override 
  public View onCreateView(LayoutInflater inflater, ViewGroup container,  
      Bundle savedInstanceState) {  
    if (cOntainer== null) {        
      return null;  
    }  
    ScrollView scroller = new ScrollView(getActivity());  
    TextView text = new TextView(getActivity());  
  
    int padding = (int) TypedValue.applyDimension(  
        TypedValue.COMPLEX_UNIT_DIP, 4, getActivity().getResources()  
            .getDisplayMetrics());  
    text.setPadding(padding, padding, padding, padding);  
    scroller.addView(text);  
    text.setText(Shakespeare.DIALOGUE[getArguments().getInt("index", 0)]);  
    return scroller;  
  }  
} 

       DetailsFragment 中使用newInstance(int index)方法产生DetailsFragment 实例并接受整型参数,重载了onCreateView方法创建view。

       这个例子基本完成了,主要介绍的是在3.0以后的使用方法,其实Fragment在SDK1.6之后就可以使用了,在1.6上使用需要借助 android-support-v4.jar包实现。android-support-v4.jar在:SDK根目录\extras\android \compatibility\v4下可以找到。

          以上就是对Android Fragment的资料整理,后续继续添加相关资料,谢谢大家对本站的支持!


推荐阅读
  • Vue 2 中解决页面刷新和按钮跳转导致导航栏样式失效的问题
    本文介绍了如何通过配置路由的 meta 字段,确保 Vue 2 项目中的导航栏在页面刷新或内部按钮跳转时,始终保持正确的 active 样式。具体实现方法包括设置路由的 meta 属性,并在 HTML 模板中动态绑定类名。 ... [详细]
  • 本文探讨了如何通过最小生成树(MST)来计算严格次小生成树。在处理过程中,需特别注意所有边权重相等的情况,以避免错误。我们首先构建最小生成树,然后枚举每条非树边,检查其是否能形成更优的次小生成树。 ... [详细]
  • QUIC协议:快速UDP互联网连接
    QUIC(Quick UDP Internet Connections)是谷歌开发的一种旨在提高网络性能和安全性的传输层协议。它基于UDP,并结合了TLS级别的安全性,提供了更高效、更可靠的互联网通信方式。 ... [详细]
  • 本文详细分析了JSP(JavaServer Pages)技术的主要优点和缺点,帮助开发者更好地理解其适用场景及潜在挑战。JSP作为一种服务器端技术,广泛应用于Web开发中。 ... [详细]
  • 本文介绍了如何利用JavaScript或jQuery来判断网页中的文本框是否处于焦点状态,以及如何检测鼠标是否悬停在指定的HTML元素上。 ... [详细]
  • Python自动化处理:从Word文档提取内容并生成带水印的PDF
    本文介绍如何利用Python实现从特定网站下载Word文档,去除水印并添加自定义水印,最终将文档转换为PDF格式。该方法适用于批量处理和自动化需求。 ... [详细]
  • 理解存储器的层次结构有助于程序员优化程序性能,通过合理安排数据在不同层级的存储位置,提升CPU的数据访问速度。本文详细探讨了静态随机访问存储器(SRAM)和动态随机访问存储器(DRAM)的工作原理及其应用场景,并介绍了存储器模块中的数据存取过程及局部性原理。 ... [详细]
  • XNA 3.0 游戏编程:从 XML 文件加载数据
    本文介绍如何在 XNA 3.0 游戏项目中从 XML 文件加载数据。我们将探讨如何将 XML 数据序列化为二进制文件,并通过内容管道加载到游戏中。此外,还会涉及自定义类型读取器和写入器的实现。 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 几何画板展示电场线与等势面的交互关系
    几何画板是一款功能强大的物理教学软件,具备丰富的绘图和度量工具。它不仅能够模拟物理实验过程,还能通过定量分析揭示物理现象背后的规律,尤其适用于难以在实际实验中展示的内容。本文将介绍如何使用几何画板演示电场线与等势面之间的关系。 ... [详细]
  • 本文介绍如何通过Windows批处理脚本定期检查并重启Java应用程序,确保其持续稳定运行。脚本每30分钟检查一次,并在需要时重启Java程序。同时,它会将任务结果发送到Redis。 ... [详细]
  • MySQL中枚举类型的所有可能值获取方法
    本文介绍了一种在MySQL数据库中查询枚举(ENUM)类型字段所有可能取值的方法,帮助开发者更好地理解和利用这一数据类型。 ... [详细]
  • Android LED 数字字体的应用与实现
    本文介绍了一种适用于 Android 应用的 LED 数字字体(digital font),并详细描述了其在 UI 设计中的应用场景及其实现方法。这种字体常用于视频、广告倒计时等场景,能够增强视觉效果。 ... [详细]
  • RecyclerView初步学习(一)
    RecyclerView初步学习(一)ReCyclerView提供了一种插件式的编程模式,除了提供ViewHolder缓存模式,还可以自定义动画,分割符,布局样式,相比于传统的ListVi ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
author-avatar
晏圣玲
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有