热门标签 | 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的资料整理,后续继续添加相关资料,谢谢大家对本站的支持!


推荐阅读
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • 本文讲述了作者通过点火测试男友的性格和承受能力,以考验婚姻问题。作者故意不安慰男友并再次点火,观察他的反应。这个行为是善意的玩人,旨在了解男友的性格和避免婚姻问题。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
author-avatar
祝图net
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有