2019独角兽企业重金招聘Python工程师标准>>>

让我们来看看各种RoboGuice 库的使用方法。

使用RoboGuice库 :

  • 控件注入:用@InjectViews方法初始化控件,例如:@InjectView(R.id.textview1)TextView textView1。

  • 资源注入:用@InjectResources方法初始化资源,例如:@InjectResource(R.string.app_name)String name。

  • 系统服务注入:用@Inject方法初始化并获取系统服务,例如:@Inject LayoutInflater inflater。

  • POJO对象注入:用@Inject方法注入并初始化POJO对象,例如:@Inject Foo foo。

安装

要使用RoboGuice,你需要下载JAR文件并把他们添加到环境变量中:

  • http://repo1.maven.org/maven2/org/roboguice/roboguice/2.0/roboguice-2.0.jar

  • http://repo1.maven.org/maven2/com/google/inject/guice/3.0/guice-3.0-no_aop.jar

  • http://repo1.maven.org/maven2/com/google/code/findbugs/jsr305/1.3.9/jsr305-1.3.9.jar

我们来看看一个简单的一般事件代码:

public class TestActivity extends Activity{TextView textView1;TextView textView2;ImageView imageView1;String name;Drawable icLauncher;LocationManager locManager;LayoutInflater inflater;NotificationManager notifyManager;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.layout_test);textView1 = (TextView) findViewById(R.id.textView1);textView2 = (TextView) findViewById(R.id.textView2);imageView1 = (ImageView) findViewById(R.id.imageView1);name = getString(R.string.app_name);icLauncher = getResources().getDrawable(R.id.ic_launcher);locManager = (LocationManager) getSystemService(Activity.LOCATION_SERVICE);inflater = (LayoutInflater) getSystemService(Activity.LAYOUT_INFLATER_SERVICE);notifyManager = (NotificationManager) getSystemService(Activity.NOTIFICATION_SERVICE);textView1.setText("Hello World! RoboGuice demo");}
}

?

再看看使用RoboGuice精简代码后神奇之处。

使用RoboGuice

你先要继承RoboActivity或者RoboFragment,才能使用RoboGuice的依赖注入功能。

public class TestActivity extends RoboActivity{@InjectView(R.id.textView1) TextView textView1;@InjectView(R.id.textView2) TextView textView2;@InjectView(R.id.imageView1) ImageView imageView1;@InjectResource(R.string.app_name) String name;@InjectResource(R.drawable.ic_launcher) Drawable icLauncher;@Inject LocationManager locManager;@Inject LayoutInflater inflater;@Inject NotificationManager notifyManager;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.layout_test);textView1.setText(name);}

?

这么一对比,我想你肯定明白了为什么要使用RoboGuice?再来看看有哪些好处:

使用RoboGuice的好处

  • 不需要初始化控件,如有需要就用@InjectViews。

  • 不需要初始化系统服务,如有需要就用@Inject。

  • 不需要初始化像Drawable,string以及其他的资源,如有需要就用@InjectResource。

  • 以上实践能帮助你精简代码。

  • 越少的代码,越少的问题和bugs。

  • 少量的代码让Android开发人员省力同时,也让他们能更专注于实际的业务逻辑。

RoboGuice和ActionBarSherlock

正如我前面提到的,你得在RoboActivity和RoboFragment中继承其中一个才能在Activity事件或Fragment中使用RoboGuice。但是如果你已经在项目中使用了ActionBarSherlock去编译呢?那问题就在于,你已经继承了SherlockActivity或SherlockFragmentActivity中的一个。现在问题是,你不能同时使用RoboGuice和ActionBarSherlock。

解决方法是,为Activities和Fragments定义一个基类。然后你就能同时使用RoboGuice和ActionBarSherlock了。

你可以在这里下载一些基类:

https://github.com/rtyley/roboguice-sherlock 或者下载JAR包也是一样:RoboGuice+Sherlock.jar,你可以任选一个添加到你的项目。

在Android应用程序中,我想我已经做了所有关于RoboGuice用法及好处的研究。如过有什么遗漏,请联系我。在接下来的文章,我会研究其他的函数库好让你成为一个既能偷懒又高效的Android开发人员。

原文:http://mjava.org/1506.shtml

转载于:https://my.oschina.net/u/256102/blog/203199

RoboGuice入门相关推荐

  1. 用Construct 2制作入门小游戏~

    今天在软导课上了解到了Construct 2这个神器,本零基础菜鸟决定尝试做一个简单的小游戏(实际上是入门的教程啊= = 首先呢,肯定是到官网下载软件啊,点击我下载~ 等安装完毕后我便按照新手教程开始 ...

  2. Docker入门六部曲——Swarm

    原文链接:http://www.dubby.cn/detail.html?id=8738 准备工作 安装Docker(版本最低1.13). 安装好Docker Compose,上一篇文章介绍过的. 安 ...

  3. Docker入门六部曲——Stack

    原文链接:http://www.dubby.cn/detail.html?id=8739 准备知识 安装Docker(版本最低1.13). 阅读完Docker入门六部曲--Swarm,并且完成其中介绍 ...

  4. Docker入门六部曲——服务

    原文链接:http://www.dubby.cn/detail.html?id=8735 准备 已经安装好Docker 1.13或者以上的版本. 安装好Docker Compose.如果你是用的是Do ...

  5. 【springboot】入门

    简介: springBoot是spring团队为了整合spring全家桶中的系列框架做研究出来的一个轻量级框架.随着spring4.0推出而推出,springBoot可以説是J2SEE的一站式解决方案 ...

  6. SpringBoot (一) :入门篇 Hello World

    什么是SpringBoot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不 ...

  7. 入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集-深度学习问题

    入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集 GT_Zhang关注 0.1012019.08.01 18:43:34字数 1,874阅读 795 Hi,欢迎各位来自Paddl ...

  8. 5 分钟入门 Google 最强NLP模型:BERT

    BERT (Bidirectional Encoder Representations from Transformers) 10月11日,Google AI Language 发布了论文 BERT: ...

  9. 命名实体识别入门教程(必看)

    关于开发自己的命名实体识别先期思路: 虽然网上有很多相关代码,但实际如何入门材料较少,故整理下: CRF:先期可以用人民日报语料库去做,步骤如下: https://blog.csdn.net/hude ...

最新文章

  1. JavaWeb项目实现文件下载
  2. 【实验】不会端口映射?看完就会了
  3. MybatisPlus中插入数据获取主键值
  4. 【机器学习】模型压缩大杀器!详解高效模型设计的自动机器学习流水线
  5. SQL注入原理深度解析
  6. java sql server 存储过程_修改SQL SERVER内置存储过程
  7. JBOSS7启动与关闭
  8. weblogic apache 整合 代理
  9. SIR模型的应用(2) - Influence maximization in social networks based on TOPSIS(3)
  10. [Unity] UniWebView的使用
  11. 单片机STM8S测量电压电路_万用表检测电子电路:电阻测量法,电压测量法
  12. 磁共振t1t2信号记忆顺口溜_【 磁共振t1与t2是啥意义】_特点_特征-大众养生网
  13. Ubuntu11.10安装科磊NW336驱动
  14. node-js——将excel表格转换成json文件
  15. sql根据身份证号计算现在的年龄
  16. JD eid fp
  17. PRA10.3 平台 API 接口调用
  18. 知乎日报APP:API接口分析
  19. 企业建站:勿让蜘蛛陷入的六个“坑”
  20. 诺基亚Lumia 800安装QQ、微信等软件

热门文章

  1. java 加密解密简单实现
  2. 深入浅出剖析 OpenCV 视觉处理
  3. 从入门到放弃,C++ 真这么难?
  4. linux cpu平均负载,关于linux系统CPU篇---平均负载
  5. c语言实现结构体变量private,C语言中结构体变量私有化详解
  6. MySQL发展史重大事件
  7. explain 之 id
  8. SpringMVC的请求-获得请求参数-获得数组类型参数
  9. RocketMQ的Producer详解之分布式事务消息(原理分析)
  10. 前端权限控制:实现思路分析-待修改