原文网址:http://blog.csdn.net/hishentan/article/details/20734489

源码部分:

BookContent.java

  1. package com.example.bookdetailfragment;
  2. import java.util.ArrayList;
  3. import java.util.HashMap;
  4. import java.util.List;
  5. import java.util.Map;
  6. import android.content.Context;
  7. public class BookContent {
  8. //inner class
  9. public static class Book{
  10. public Integer id;
  11. public String title;
  12. public String desc;
  13. public Book(Integer id,String title,String desc){
  14. this.id = id;
  15. this.title = title;
  16. this.desc = desc;
  17. }
  18. @Override
  19. public String toString(){
  20. return this.title;
  21. }
  22. }
  23. //recorde included book object
  24. public static List<Book> ITEMS = new ArrayList<Book>();
  25. public static Map<Integer,Book> ITEM_MAP = new HashMap<Integer,Book>();
  26. static{
  27. addItem(new Book(1,"Java","Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。"));
  28. addItem(new Book(2,"Math","数学是源自于人类早期的生产活动,早期古希腊、古巴比伦、古埃及、古印度及中国古代都对数学有所研究。数学是研究数量、结构、变化以及空间模型等概念的一门学科。透过抽象化和逻辑推理的运用,由计数、计算、量度和对物体形状及运动的观察中产生。数学的基本要素是:逻辑和直观、分析和推理、共性和个性。"));
  29. addItem(new Book(3,"English","英语(English )属于印欧语系中下的西日耳曼语支,由古代从欧洲大陆移民大不列颠岛的盎格鲁、撒克逊和朱特部落的日耳曼人所说的语言演变而来,并通过英国的殖民活动传播到世界各地。由于在历史上曾和多种民族语言接触,它的词汇从一元变为多元,语法从“多屈折”变为“少屈折”,语音也发生了规律性的变化。"));
  30. }
  31. //add book object to list and map  respectively
  32. public static void addItem(Book book){
  33. ITEMS.add(book);
  34. ITEM_MAP.put(book.id,book);
  35. }
  36. }

BookDetailFragment.java

  1. package com.example.bookdetailfragment;
  2. import android.os.Bundle;
  3. import android.app.Fragment;
  4. import android.view.LayoutInflater;
  5. import android.view.View;
  6. import android.view.ViewGroup;
  7. import android.widget.TextView;
  8. public class BookDetailFragment extends Fragment {
  9. public static final String ITEM_ID = "item_id";
  10. BookContent.Book book;
  11. @Override
  12. public void onCreate(Bundle savedInstanceState) {
  13. super.onCreate(savedInstanceState);
  14. if(getArguments().containsKey(ITEM_ID)){
  15. //--如果启动该Fragment时包含了ITEM_ID参数
  16. book = BookContent.ITEM_MAP.get(getArguments().getInt(ITEM_ID));
  17. }
  18. }
  19. @Override
  20. public View  onCreateView(LayoutInflater inflater, ViewGroup container,
  21. Bundle savedInstanceState){
  22. //加载布局文件
  23. View rootView = inflater.inflate(R.layout.activity_book_detail_fragment,
  24. container, false);
  25. if(book!=null){
  26. //让id为book_title book_desc的文本框分别显示book.title  book_desc
  27. ((TextView)rootView.findViewById(R.id.book_title)).setText(book.title);
  28. ((TextView)rootView.findViewById(R.id.book_desc)).setText(book.desc);
  29. }
  30. return rootView;
  31. }
  32. //
  33. }

BookListFragment.java

  1. package com.example.bookdetailfragment;
  2. import android.app.Activity;
  3. import android.app.ListFragment;
  4. import android.os.Bundle;
  5. import android.view.View;
  6. import android.widget.ArrayAdapter;
  7. import android.widget.ListView;
  8. //extends ListFragMent
  9. public class BookListFragment extends ListFragment {
  10. //定义一个回调接口  该Fragment对象所在Activity需要实现该接口
  11. public interface Callbacks{
  12. public void onItemSelected(Integer id);
  13. }
  14. private Callbacks mCallbacks;
  15. @Override
  16. public void onCreate(Bundle savedInstanceState){
  17. super.onCreate(savedInstanceState);
  18. //为该ListFragment设置Adapter
  19. ArrayAdapter<BookContent.Book> adapter = new ArrayAdapter<BookContent.Book>(
  20. getActivity(),android.R.layout.simple_list_item_activated_1,
  21. android.R.id.text1,BookContent.ITEMS);//左边的Fragment  此处只显示标题
  22. //BookContent.Book类的toString()方法返回的是this.title
  23. setListAdapter(adapter);
  24. }
  25. @Override
  26. //Called when --a fragment is first attached to its activity--.
  27. public void onAttach(Activity activity){
  28. super.onAttach(activity);
  29. //如果该Acitivity没有实现Callbacks接口
  30. if(!(activity instanceof Callbacks)){
  31. try {
  32. throw new Exception("BookListFragement所在的Activity" +
  33. "必须实现Callbacks接口");
  34. } catch (Exception e) {
  35. // TODO Auto-generated catch block
  36. e.printStackTrace();
  37. }
  38. }
  39. //把该Activity当成Callbacks对象
  40. mCallbacks = (Callbacks) activity;
  41. }
  42. @Override
  43. //Called when the fragment is no longer attached to its activity.
  44. public void onDetach(){
  45. super.onDetach();
  46. mCallbacks = null;
  47. }
  48. @Override
  49. //当用户单击某列表项时回调该方法
  50. public void onListItemClick(ListView l, View v, int position, long id){
  51. super.onListItemClick(l, v, position, id);
  52. //激发mCallbacks的onItemSelected方法
  53. mCallbacks.onItemSelected(BookContent.ITEMS.get(position).id);
  54. }
  55. //设置选择模式***  where to call  ??
  56. /*
  57. public void setActivateOnItemClick(boolean activateOnItemClick){
  58. getListView().setChoiceMode(activateOnItemClick?ListView.CHOICE_MODE_SINGLE:
  59. ListView.CHOICE_MODE_NONE);
  60. }*/
  61. }

SelectBookActivity.java

  1. package com.example.bookdetailfragment;
  2. import android.app.Activity;
  3. import android.app.FragmentManager;
  4. import android.app.FragmentTransaction;
  5. import android.os.Bundle;
  6. //
  7. public class SelectBookActivity extends Activity implements BookListFragment.Callbacks {
  8. @Override
  9. public void onCreate(Bundle savedInstanceState){
  10. super.onCreate(savedInstanceState);
  11. //add book_twopane layout with fragment label
  12. setContentView(R.layout.activity_book_twopane);
  13. //
  14. }
  15. //implement the method from interface BookListFragment.Callbacks
  16. public void onItemSelected(Integer id){
  17. //deliver parameters to BookListFragment
  18. Bundle arguments = new Bundle();
  19. arguments.putInt(BookDetailFragment.ITEM_ID, id);
  20. //Create BookDetailFragment
  21. BookDetailFragment bookdetailfragment = new  BookDetailFragment();
  22. bookdetailfragment.setArguments(arguments);//<---向Fragment传入参数
  23. //cget fragmentmanager
  24. FragmentManager fragmentManager = getFragmentManager();
  25. //begin transaction
  26. FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
  27. fragmentTransaction.replace(R.id.book_detail_container, bookdetailfragment);
  28. //commit transaction
  29. fragmentTransaction.commit();
  30. }
  31. }

activity_book_detail_fragment.xml

  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:paddingBottom="@dimen/activity_vertical_margin"
  6. android:paddingLeft="@dimen/activity_horizontal_margin"
  7. android:paddingRight="@dimen/activity_horizontal_margin"
  8. android:paddingTop="@dimen/activity_vertical_margin"
  9. tools:context=".BookDetailFragment" >
  10. <LinearLayout
  11. android:layout_width="fill_parent"
  12. android:layout_height="fill_parent"
  13. android:orientation="vertical"
  14. >
  15. <TextView
  16. android:id="@+id/book_title"
  17. android:layout_width="fill_parent"
  18. android:layout_height="wrap_content"
  19. android:padding="16dp"
  20. android:textSize="20sp"
  21. android:background="#0f0"
  22. />
  23. <TextView
  24. android:id="@+id/book_desc"
  25. android:layout_width="fill_parent"
  26. android:layout_height="wrap_content"
  27. android:padding="16dp"
  28. android:textSize="15sp"
  29. />
  30. </LinearLayout>
  31. </RelativeLayout>

activity_book_twopane.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!-- 水平排列 使用中等分隔条 -->
  3. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  4. android:layout_width="match_parent"
  5. android:layout_height="match_parent"
  6. android:orientation="horizontal"
  7. android:showDividers="middle"
  8. android:baselineAligned="false"
  9. >
  10. <!-- 添加一个Fragment -->
  11. <fragment
  12. android:name="com.example.bookdetailfragment.BookListFragment"
  13. android:id="@+id/book_list"
  14. android:layout_width="0dp"
  15. android:layout_height="fill_parent"
  16. android:layout_weight="1"
  17. />
  18. <!-- 添加一个FrameLayout容器 -->
  19. <FrameLayout
  20. android:id="@+id/book_detail_container"
  21. android:layout_width="0dp"
  22. android:layout_height="fill_parent"
  23. android:layout_weight="3"
  24. >
  25. </FrameLayout>
  26. </LinearLayout>

AndroidManifest.xml

android:name="com.example.bookdetailfragment.SelectBookActivity"

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="com.example.bookdetailfragment"
  4. android:versionCode="1"
  5. android:versionName="1.0" >
  6. <uses-sdk
  7. android:minSdkVersion="11"
  8. android:targetSdkVersion="18" />
  9. <application
  10. android:allowBackup="true"
  11. android:icon="@drawable/ic_launcher"
  12. android:label="@string/app_name"
  13. android:theme="@style/AppTheme" >
  14. <activity
  15. android:name="com.example.bookdetailfragment.SelectBookActivity"
  16. android:label="@string/app_name" >
  17. <intent-filter>
  18. <action android:name="android.intent.action.MAIN" />
  19. <category android:name="android.intent.category.LAUNCHER" />
  20. </intent-filter>
  21. </activity>
  22. </application>
  23. </manifest>

运行结果:

 

【转】FragmentTest学习笔记1的更多相关文章

  1. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  2. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  3. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  4. 2014年暑假c#学习笔记目录

    2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...

  5. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  6. seaJs学习笔记2 – seaJs组建库的使用

    原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...

  7. CSS学习笔记

    CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...

  8. HTML学习笔记

    HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...

  9. DirectX Graphics Infrastructure(DXGI):最佳范例 学习笔记

    今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.micro ...

随机推荐

  1. Linux命令执行顺序— ||和&&和;

    command1 && command2: &&左边的command1执行成功(返回0表示成功)后,&&右边的command2才能被执行. comman ...

  2. Oracle RAC集群安装之:Grid软件安装过程蓝屏

    前几天在安装一套RAC服务器的过程中,遇到了蓝屏事件,折腾了蛮久(在排查是否存在硬件问题上花费了相当多一部分时间),整个过程大概说明如下: 1.两台华为的PC SERVER,操作系统为WIN SERV ...

  3. Gnome 插件介绍

    插件:Applications Menuhttps://extensions.gnome.org/extension/6/applications-menu/ TopIconshttps://exte ...

  4. Linux与Windows中动态链接库的分析与对比

    摘要:动态链接库技术实现和设计程序常用的技术,在Windows和Linux系统中都有动态库的概念,采用动态库可以有效的减少程序大小,节省空间,提高效率,增加程序的可扩展性,便于模块化管理.但不同操作系 ...

  5. 论文阅读(2014-1)----a new collaborative filtering-based recommender system for manufacturing appstore: which applications would be useful to your busines?

    这篇论文讲的东西并不深,讲的是appstore上的app个性化推荐问题,简单做个笔记. 简单介绍: 推荐系统可以降低没有卖任何app就离开的用户的概率.当用户买了某个app后,可以推荐配套的app.增 ...

  6. [搜片神器]DHT后台管理程序数据库流程设计优化学习交流

    谢谢园子朋友的支持,已经找到个VPS进行测试,国外的服务器: sosobt.com 大家可以给提点意见... 服务器在抓取和处理同时进行,所以访问速度慢是有些的,特别是搜索速度通过SQL的like来查 ...

  7. struts2+hibernate-jpa+Spring+maven 整合(1)

    1.0.0 struts2 与 spring 的整合. 1.1.0 新建maven工程 , 编写pom.xml ,这里只需要简单的添加 一个组件就够了: 在myeclipse 生成的pom.xml 添 ...

  8. PAT-乙级-1042. 字符统计(20)

    1042. 字符统计(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 请编写程序,找出一段给定文字中出现最 ...

  9. Untiy 接入 移动MM 详解

    原地址:http://www.cnblogs.com/alongu3d/p/3627936.html Untiy 接入 移动MM 详解 第一次接到师傅的任务(小龙),准备着手写untiy接入第三方SD ...

  10. JavaScript 踩坑心得— 为了高速(上)

    一.前言 很多情况下,产品的设计与开发人员一直想打造一套高品质的解决方案,从而快速.平稳地适应产品迭代.速度是衡量产品适应性的真正且唯一的标准,而且,这并不是笔者的一家之言. 「速度是衡量适应能力的真 ...