Android上的Guice:RoboGuice

什么是Guice

  Guice是Google开发的一个轻量级,基于Java5(主要运用泛型与注释特性)的依赖注入框架(IOC)。

RoboGuice

  RoboGuice 使用谷歌自己的Google Guice库,给Android带来了简单和易用的依赖注入。可以大大简化Android应用开发的代码和一些繁琐重复的代码。比如代码中可能需要大量使用findViewById在XML中查找一个View,并将其强制转换到所需类型,onCreate 中可能有大量的类似代码。RoboGuice 允许使用annotation 的方式来描述id于View之间的关系,其余的工作由roboGuice库来完成。如果你使用过Spring或Guice的话,你可能已经知道这种编程方式是多么的便捷。

使用

RoboGuice共需要两个相互依赖的jar包,大家可以去他的项目主页http://code.google.com/p/roboguice/下载RoboGuice以及Guice这两个类库(现在可以直接在github上下载两个都在里面,github地址在文末)。

package com.yongchun.robo.ui;
import roboguice.activity.RoboActivity;
import roboguice.inject.InjectView;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
/*
 * 需要注意的是,使用RoboGuice这套依赖注入的框架,Activity不在是继承Activity,
 * 而是继承RoboActivity.什么?你问为什么?为什么?这就跟为什么Android上的Activity界面 必须要继承自Activity一样.
 */
public class HelloRobo1 extends RoboActivity {
    /*
     * 对Button的引用
     */
    @InjectView(R.id.button1)
    Button button;
    /*
     * 对TextView的引用
     */
    @InjectView(R.id.textView1)
    TextView textView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        button.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                // TODO Auto-generated method stub
                textView.setText("roboguice");
            }
        });
    }
}

https://github.com/roboguice/roboguice