开源框架:fragmentargs 的优势和使用方法

/**转帖注明出处*/

FragmentArgs开源库的地址:https://github.com/sockeqwe/fragmentargs

FragmentArgs是一个轻量级的开源库,他用来为你的Frgament生成准确java代码,这个库使用简单。下边是使用FragmentArgs的示例代码:


import com.hannesdorfmann.fragmentargs.FragmentArgs;

import com.hannesdorfmann.fragmentargs.annotation.Arg;

 

public class MyFragment extends Fragment {

 

	@Arg

	int id;

 

	@Arg

	String title;

 

	@Override

	public void onCreate(Bundle savedInstanceState){

		super.onCreate(savedInstanceState);

		FragmentArgs.inject(this); // read @Arg fields

	}

 

	@Override

	public View onCreateView(LayoutInflater inflater,

		ViewGroup container, Bundle savedInstanceState) {

 

      		Toast.makeText(getActivity(), "Hello " + title,

      			Toast.LENGTH_SHORT).show();

      }

}

大家会明显的发现使用FragmentArgs后我们少写了很多代码,这就是FrgamentArgs的强大之处。FragmentArgs会为你的Fragment中的注解属性生成样板代码。在你的Activity中你将使用FragmentArgs生成的Builder类代替new MyFragment(int
id,String title)或静态的MyFragment.newInstance(int id,String title)方法。示例代码如下:


public class MyActivity extends Activity {

 

	public void onCreate(Bundle savedInstanceState){

		super.onCreate(savedInstanceState);

 

		int id = 123;

		String title = "test";

 

		// Using the generated Builder

		Fragment fragment =

			new MyFragmentBuilder(id, title)

			.build();

 

		// Fragment Transaction

		getFragmentManager()

			.beginTransaction()

			.replace(R.id.container, fragment)

			.commit();

	}

 

}

你可能注意到Fragment的onCreate()方法里边的FragmentArgs.inject(this)语句。当调用该语句的时候FragmentArgs将会为你的Fragment生成相应的代码。你可能会问那我是不是必须要在我的每一个Fragment的onCreate方法里边都要调用这个方法呀?你并不需要在你的每一个Fragment的onCreate方法里边都调用这个语句,FragmentsArgs.inject(this)语句支持继承,你只需要写一个Fragment基类,在基类的onCreate方法里调用FragmentArgs.inject(this)语句,然后让其它的Fragment继承这个基类就行了。就像下边的代码这样


public class BaseFragment extends Fragment {

 

    @Override

    public void onCreate(Bundle savedInstanceState){

        super.onCreate(savedInstanceState);

        FragmentArgs.inject(this); // 读取 @Arg 属性

    }

}

 

public class MyFragment extends BaseFragment {

 

  @Arg

  String title;

 

  @Override

  public View onCreateView(LayoutInflater inflater,

    ViewGroup container, Bundle savedInstanceState) {

 

      Toast.makeText(getActivity(), "Hello " + title,

        Toast.LENGTH_SHORT).show();

  }

 

}

首先我们从网址https://github.com/sockeqwe/fragmentargs处下载代码,解压后的目录如下所示

这里的annotation和processor文件夹是两个项目,processor项目依赖于annotation项目。当你点开annotation目录和processor目录的时候你会发现他们并不是Eclipse项目。我们需要将这里的annotation和processor合并到一个项目里边并生成.jar文件。首先我们先新建一个java项目(注意是java项目不是android项目)

然后我们将annotation目录下的代码拷到刚新建的fragmentargs项目的src目录下(注意拷的时候从com目录开始拷)

然后我们在将processor目录下的代码拷到fragmentargs目录下(注意也是从com目录开始拷)

除此之外我们还需要将路径processor\src\main\resources里边的文件夹META-INF拷到fragmentargs项目的根目录下(即META-INF跟src是同级目录)

下边我们该生成.jar文件夹了。

点击finish后可能会弹出。。不要管他点击ok

现在.jar文件就生成成功了。

现在我们来新建一个android项目,并将生成的.jar文件拷到新建的android项目的libs目录下:

同时需要额外设置的选项有,

1)           工程属性—>java Compiler Annotation Processing 勾选Enable project specific settings,Enable annotation prcessing。

2)           如果需要生成源文件,则可以设置目标文件的存储路径。

3)           在Factory Path中指定annotation processor所在的jar包。

经过上边的一系列设置之后,你就可以使用FragmentArgs库了。但是谷歌提供给开发者的Eclipse默认是没有带Annotation processing的。

解决方法:

需要配置一个插件:

就这些了,用起来确实不fragment加bundle方便。

时间: 2024-09-27 22:19:03

开源框架:fragmentargs 的优势和使用方法的相关文章

java开源框架SpringSide3多数据源配置的方法详解

原创整理不易,转载请注明出处:java开源框架SpringSide3多数据源配置的方法详解 代码下载地址:http://www.zuidaima.com/share/1781579130801152.htm 在SpringSide 3社区中,不断有人提出多数据源配置的问题,但是时至今日却一直没有一个完美的答案.经过一个星期的折腾,我总算搞清楚了在SpringSide 3中配置多数据源的各种困难并加以解决,在这里,特地把我配置SpringSide 3项目中多数据源的过程写出来,与大家分享. 我使用

开源框架数据库连接池dbcp的使用方法

package com.mysql.demo; import java.io.InputStream; import java.sql.Connection; import java.sql.SQLException; import java.util.Properties; import javax.sql.DataSource; import org.apache.commons.dbcp.BasicDataSourceFactory; //运用开源数据库连接池DBCP //引用dbcp.j

Farseer.net轻量级开源框架 中级篇:常用的扩展方法

导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 中级篇: BasePage.BaseController.BaseHandler.BaseMasterPage.BaseControls基类使用 下一篇:Farseer.net轻量级开源框架 中级篇: 常用工具 在使用框架的时候,都需要引用扩展方法的命名空间:using FS.Extend; 1 /// <summary> 2 /// 将值转换成类型对像的值(此方法作为公共的调用,只支持

值得学习的C/C++开源框架(转)

值得学习的C语言开源项目 - 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力.Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行. 下载链接:http://home.tiscali.cz/~cz210552/webbench.html - 2. Tinyhttpd tinyhttpd是一个超轻量型Ht

各开源框架使用与设计总结

一.框架课程总结 框架.设计模式和队列是5月份公开课的三个主题,第一周讲设计模式,第二.四周讲框架,第三周讲队列.框架讲了两周,介绍了框架的概念.PHP框架的应用范围,以及常用的PHP框架,今天是框架的最后一讲,是对整个框架系列课程的汇总,同时和大家讨论一些框架之外.或者框架之下的技术. 今天要讨论的分为这几个方面,总结框架系列课程.探讨框架可能存在,或者解决不了的问题,以及其解决方案和当前的探索. 在框架第一讲中,志华老师也站得高度很高,讲述了框架.架构的概念,以及对比了它的异同.总结来讲就是

开源框架(整理)

开源框架(整理) Json.NET http://json.codeplex.com/ Json.Net 是一个读写Json效率比较高的.Net框架.Json.Net 使得在.Net环境下使用Json更加简单.通过Linq To JSON可以快速的读写Json,通过JsonSerializer可以序列化你的.Net对象.让你轻松实现.Net中所有类型(对象,基本数据类型 等)和Json的转换. Math.NET http://www.mathdotnet.com/ Math.NET的目标是为提供

值得推荐的C/C++开源框架和库

值得推荐的C/C++开源框架和库 转自:http://www.cnblogs.com/lidabo/p/5514155.html - 1. Webbench Webbench是一个在Linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力.Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行. 下载链接:http://home.tiscali.cz/~cz21

C++的一些不错开源框架,可以学习和借鉴

larryjiang 我的文章 我的文档 我的文集 我的收藏 我的草稿 我的微博 我的投票 我的活动 我的相册 我的日历 退出登录 × 查看26条@我的微博 查看1条系统消息 查看44条@我的微博 创建文章 创建活动 创建相册 创建投票 创建文集 创建定时短信 手机KM 频道 研发月报 腾讯月刊 Q益平台 微爱益起来 职业发展 总办交流 KM周刊 乐问周刊 应用 活动 投票 相册 文集 幻灯片 祝福卡 定时短信 达人堂 实验室 期刊 工作圈 我的K吧 K吧排序 浏览K吧 | 创建K吧 KM平台组

开源框架思索-----一篇醍醐灌顶的好文章

本文源于IT168 作者 陈雄华 http://tech.it168.com/o/2006-12-13/200612131101722.shtml 1 空前繁荣的开源世界 大致2000年以前,Java世界还是Sun一言九鼎,唯我独尊的时代.Sun发布的任何规范和标准都无一例外地被Java社区有意无意的追捧着,Java世界沉浸在一片歌功颂德,前拥后簇的氛围里.IBM,Bea,Oracle这些Java阵营的代表者也都为能最先最快实现Sun的各种规范而弹冠相庆. 但这三四年来,Java的列车驶进了春秋