RoboGuice入门
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入门相关推荐
- 用Construct 2制作入门小游戏~
今天在软导课上了解到了Construct 2这个神器,本零基础菜鸟决定尝试做一个简单的小游戏(实际上是入门的教程啊= = 首先呢,肯定是到官网下载软件啊,点击我下载~ 等安装完毕后我便按照新手教程开始 ...
- Docker入门六部曲——Swarm
原文链接:http://www.dubby.cn/detail.html?id=8738 准备工作 安装Docker(版本最低1.13). 安装好Docker Compose,上一篇文章介绍过的. 安 ...
- Docker入门六部曲——Stack
原文链接:http://www.dubby.cn/detail.html?id=8739 准备知识 安装Docker(版本最低1.13). 阅读完Docker入门六部曲--Swarm,并且完成其中介绍 ...
- Docker入门六部曲——服务
原文链接:http://www.dubby.cn/detail.html?id=8735 准备 已经安装好Docker 1.13或者以上的版本. 安装好Docker Compose.如果你是用的是Do ...
- 【springboot】入门
简介: springBoot是spring团队为了整合spring全家桶中的系列框架做研究出来的一个轻量级框架.随着spring4.0推出而推出,springBoot可以説是J2SEE的一站式解决方案 ...
- SpringBoot (一) :入门篇 Hello World
什么是SpringBoot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不 ...
- 入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集-深度学习问题
入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集 GT_Zhang关注 0.1012019.08.01 18:43:34字数 1,874阅读 795 Hi,欢迎各位来自Paddl ...
- 5 分钟入门 Google 最强NLP模型:BERT
BERT (Bidirectional Encoder Representations from Transformers) 10月11日,Google AI Language 发布了论文 BERT: ...
- 命名实体识别入门教程(必看)
关于开发自己的命名实体识别先期思路: 虽然网上有很多相关代码,但实际如何入门材料较少,故整理下: CRF:先期可以用人民日报语料库去做,步骤如下: https://blog.csdn.net/hude ...
最新文章
- JavaWeb项目实现文件下载
- 【实验】不会端口映射?看完就会了
- MybatisPlus中插入数据获取主键值
- 【机器学习】模型压缩大杀器!详解高效模型设计的自动机器学习流水线
- SQL注入原理深度解析
- java sql server 存储过程_修改SQL SERVER内置存储过程
- JBOSS7启动与关闭
- weblogic apache 整合 代理
- SIR模型的应用(2) - Influence maximization in social networks based on TOPSIS(3)
- [Unity] UniWebView的使用
- 单片机STM8S测量电压电路_万用表检测电子电路:电阻测量法,电压测量法
- 磁共振t1t2信号记忆顺口溜_【 磁共振t1与t2是啥意义】_特点_特征-大众养生网
- Ubuntu11.10安装科磊NW336驱动
- node-js——将excel表格转换成json文件
- sql根据身份证号计算现在的年龄
- JD eid fp
- PRA10.3 平台 API 接口调用
- 知乎日报APP:API接口分析
- 企业建站:勿让蜘蛛陷入的六个“坑”
- 诺基亚Lumia 800安装QQ、微信等软件