【转】FragmentTest学习笔记1
原文网址:http://blog.csdn.net/hishentan/article/details/20734489
源码部分:
BookContent.java
- package com.example.bookdetailfragment;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import android.content.Context;
- public class BookContent {
- //inner class
- public static class Book{
- public Integer id;
- public String title;
- public String desc;
- public Book(Integer id,String title,String desc){
- this.id = id;
- this.title = title;
- this.desc = desc;
- }
- @Override
- public String toString(){
- return this.title;
- }
- }
- //recorde included book object
- public static List<Book> ITEMS = new ArrayList<Book>();
- public static Map<Integer,Book> ITEM_MAP = new HashMap<Integer,Book>();
- static{
- addItem(new Book(1,"Java","Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。"));
- addItem(new Book(2,"Math","数学是源自于人类早期的生产活动,早期古希腊、古巴比伦、古埃及、古印度及中国古代都对数学有所研究。数学是研究数量、结构、变化以及空间模型等概念的一门学科。透过抽象化和逻辑推理的运用,由计数、计算、量度和对物体形状及运动的观察中产生。数学的基本要素是:逻辑和直观、分析和推理、共性和个性。"));
- addItem(new Book(3,"English","英语(English )属于印欧语系中下的西日耳曼语支,由古代从欧洲大陆移民大不列颠岛的盎格鲁、撒克逊和朱特部落的日耳曼人所说的语言演变而来,并通过英国的殖民活动传播到世界各地。由于在历史上曾和多种民族语言接触,它的词汇从一元变为多元,语法从“多屈折”变为“少屈折”,语音也发生了规律性的变化。"));
- }
- //add book object to list and map respectively
- public static void addItem(Book book){
- ITEMS.add(book);
- ITEM_MAP.put(book.id,book);
- }
- }
BookDetailFragment.java
- package com.example.bookdetailfragment;
- import android.os.Bundle;
- import android.app.Fragment;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.TextView;
- public class BookDetailFragment extends Fragment {
- public static final String ITEM_ID = "item_id";
- BookContent.Book book;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- if(getArguments().containsKey(ITEM_ID)){
- //--如果启动该Fragment时包含了ITEM_ID参数
- book = BookContent.ITEM_MAP.get(getArguments().getInt(ITEM_ID));
- }
- }
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState){
- //加载布局文件
- View rootView = inflater.inflate(R.layout.activity_book_detail_fragment,
- container, false);
- if(book!=null){
- //让id为book_title book_desc的文本框分别显示book.title book_desc
- ((TextView)rootView.findViewById(R.id.book_title)).setText(book.title);
- ((TextView)rootView.findViewById(R.id.book_desc)).setText(book.desc);
- }
- return rootView;
- }
- //
- }
BookListFragment.java
- package com.example.bookdetailfragment;
- import android.app.Activity;
- import android.app.ListFragment;
- import android.os.Bundle;
- import android.view.View;
- import android.widget.ArrayAdapter;
- import android.widget.ListView;
- //extends ListFragMent
- public class BookListFragment extends ListFragment {
- //定义一个回调接口 该Fragment对象所在Activity需要实现该接口
- public interface Callbacks{
- public void onItemSelected(Integer id);
- }
- private Callbacks mCallbacks;
- @Override
- public void onCreate(Bundle savedInstanceState){
- super.onCreate(savedInstanceState);
- //为该ListFragment设置Adapter
- ArrayAdapter<BookContent.Book> adapter = new ArrayAdapter<BookContent.Book>(
- getActivity(),android.R.layout.simple_list_item_activated_1,
- android.R.id.text1,BookContent.ITEMS);//左边的Fragment 此处只显示标题
- //BookContent.Book类的toString()方法返回的是this.title
- setListAdapter(adapter);
- }
- @Override
- //Called when --a fragment is first attached to its activity--.
- public void onAttach(Activity activity){
- super.onAttach(activity);
- //如果该Acitivity没有实现Callbacks接口
- if(!(activity instanceof Callbacks)){
- try {
- throw new Exception("BookListFragement所在的Activity" +
- "必须实现Callbacks接口");
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- //把该Activity当成Callbacks对象
- mCallbacks = (Callbacks) activity;
- }
- @Override
- //Called when the fragment is no longer attached to its activity.
- public void onDetach(){
- super.onDetach();
- mCallbacks = null;
- }
- @Override
- //当用户单击某列表项时回调该方法
- public void onListItemClick(ListView l, View v, int position, long id){
- super.onListItemClick(l, v, position, id);
- //激发mCallbacks的onItemSelected方法
- mCallbacks.onItemSelected(BookContent.ITEMS.get(position).id);
- }
- //设置选择模式*** where to call ??
- /*
- public void setActivateOnItemClick(boolean activateOnItemClick){
- getListView().setChoiceMode(activateOnItemClick?ListView.CHOICE_MODE_SINGLE:
- ListView.CHOICE_MODE_NONE);
- }*/
- }
SelectBookActivity.java
- package com.example.bookdetailfragment;
- import android.app.Activity;
- import android.app.FragmentManager;
- import android.app.FragmentTransaction;
- import android.os.Bundle;
- //
- public class SelectBookActivity extends Activity implements BookListFragment.Callbacks {
- @Override
- public void onCreate(Bundle savedInstanceState){
- super.onCreate(savedInstanceState);
- //add book_twopane layout with fragment label
- setContentView(R.layout.activity_book_twopane);
- //
- }
- //implement the method from interface BookListFragment.Callbacks
- public void onItemSelected(Integer id){
- //deliver parameters to BookListFragment
- Bundle arguments = new Bundle();
- arguments.putInt(BookDetailFragment.ITEM_ID, id);
- //Create BookDetailFragment
- BookDetailFragment bookdetailfragment = new BookDetailFragment();
- bookdetailfragment.setArguments(arguments);//<---向Fragment传入参数
- //cget fragmentmanager
- FragmentManager fragmentManager = getFragmentManager();
- //begin transaction
- FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
- fragmentTransaction.replace(R.id.book_detail_container, bookdetailfragment);
- //commit transaction
- fragmentTransaction.commit();
- }
- }
activity_book_detail_fragment.xml
- <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"
- android:paddingBottom="@dimen/activity_vertical_margin"
- android:paddingLeft="@dimen/activity_horizontal_margin"
- android:paddingRight="@dimen/activity_horizontal_margin"
- android:paddingTop="@dimen/activity_vertical_margin"
- tools:context=".BookDetailFragment" >
- <LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical"
- >
- <TextView
- android:id="@+id/book_title"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:padding="16dp"
- android:textSize="20sp"
- android:background="#0f0"
- />
- <TextView
- android:id="@+id/book_desc"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:padding="16dp"
- android:textSize="15sp"
- />
- </LinearLayout>
- </RelativeLayout>
activity_book_twopane.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="horizontal"
- android:showDividers="middle"
- android:baselineAligned="false"
- >
- <!-- 添加一个Fragment -->
- <fragment
- android:name="com.example.bookdetailfragment.BookListFragment"
- android:id="@+id/book_list"
- android:layout_width="0dp"
- android:layout_height="fill_parent"
- android:layout_weight="1"
- />
- <!-- 添加一个FrameLayout容器 -->
- <FrameLayout
- android:id="@+id/book_detail_container"
- android:layout_width="0dp"
- android:layout_height="fill_parent"
- android:layout_weight="3"
- >
- </FrameLayout>
- </LinearLayout>
AndroidManifest.xml
android:name="com.example.bookdetailfragment.SelectBookActivity"
- <?xml version="1.0" encoding="utf-8"?>
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.example.bookdetailfragment"
- android:versionCode="1"
- android:versionName="1.0" >
- <uses-sdk
- android:minSdkVersion="11"
- android:targetSdkVersion="18" />
- <application
- android:allowBackup="true"
- android:icon="@drawable/ic_launcher"
- android:label="@string/app_name"
- android:theme="@style/AppTheme" >
- <activity
- android:name="com.example.bookdetailfragment.SelectBookActivity"
- android:label="@string/app_name" >
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- </application>
- </manifest>
运行结果:
【转】FragmentTest学习笔记1的更多相关文章
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- 2014年暑假c#学习笔记目录
2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
- seaJs学习笔记2 – seaJs组建库的使用
原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...
- CSS学习笔记
CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...
- HTML学习笔记
HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...
- DirectX Graphics Infrastructure(DXGI):最佳范例 学习笔记
今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.micro ...
随机推荐
- div中加入iframe,可以实现Ajax的功能
div中加入iframe,可以实现Ajax的功能,如果查询的时候,比如说城市的选择,用Ajax去实现, 在.net 可以考虑用UpdatePanel,但是点击了查询刷新表格(表格需要重新刷新加载,非纯 ...
- Mysql数据库备份和还原常用的命令
Mysql数据库备份和还原常用的命令是进行Mysql数据库备份和还原的关键,没有命令,什么都无从做起,更谈不上什么备份还原,只有给系统这个命令,让它去执行,才能完成Mysql数据库备份和还原的操作,下 ...
- 权限管理数据库设计_Rev1
贴出来自身接触项目以来所接触过的一些企业管理信息系统权限部门的一个通用数据库设计初稿: 设计的文字解释以及各部分的作用等确定可行会再进行描述: 图: 如果有不同意见请轻拍!
- iOS 基础 第三天(0807)
0807 成员变量作用域###### 如下图所示: 这里要注意手写的成员变量/实例变量默认的作用域是private,所以外部指针类型的对象无法直接访问,这起到一定的保护作用.但可以在当前类内部@imp ...
- How to open MS word document from the SharePoint 2010 using Microsoft.Office.Interop.dll
or this you must change the identity of word component inC:\windows\System32\comexp.mscto be interac ...
- Xcode8 - apploader 上传失败 - ERROR ITMS-90168: "The binary you uploaded was invalid."
背景:最近电脑升级了系统macOS Sierra 10.12.1:Xcode 也升级到了Version 8.1 (8B62). 问题:使用Application Loader3.0 上传应用到iTun ...
- 深入浅出百度地图API开发系列(3):模块化设计
在前面两张简单介绍了百度地图API的基础知识和使用之后,我们来分析一下百度地图API的基本架构,了解一下基本架构可以帮助我们更清晰的了解API的功能和调用过程,也就可以帮助我们在实际开发中可以更方便的 ...
- git初探
1 Linux下Git和GitHub环境的搭建 第一步: 安装Git,使用命令 "sudo apt-get install git" 第二步: 到GitHub上创建GitHub帐号 ...
- Workspace in use or cannot be created, choose a different one.--错误解决办法
eclipse 使用一段时间后,有时会因为一些故障自己就莫名奇妙的关闭了,再打开时有时没有问题,有时有会提示错误 Workspace Unavailable: 原因:出现这种情况一般是workspac ...
- SSH开发框架搭建参考
一, 参考文章: 1, http://blog.csdn.net/communicate_/article/details/8644040 这篇文章讲的还算详尽,但是貌似有一些多余的代码: 2,