RoboGuice入门
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
讓我們來(lái)看看各種RoboGuice 庫(kù)的使用方法。
使用RoboGuice庫(kù) :
控件注入:用@InjectViews方法初始化控件,例如:@InjectView(R.id.textview1)TextView textView1。
資源注入:用@InjectResources方法初始化資源,例如:@InjectResource(R.string.app_name)String name。
系統(tǒng)服務(wù)注入:用@Inject方法初始化并獲取系統(tǒng)服務(wù),例如:@Inject LayoutInflater inflater。
POJO對(duì)象注入:用@Inject方法注入并初始化POJO對(duì)象,例如:@Inject Foo foo。
安裝
要使用RoboGuice,你需要下載JAR文件并把他們添加到環(huán)境變量中:
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
我們來(lái)看看一個(gè)簡(jiǎn)單的一般事件代碼:
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精簡(jiǎn)代碼后神奇之處。
使用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);}?
| 這么一對(duì)比,我想你肯定明白了為什么要使用RoboGuice?再來(lái)看看有哪些好處: |
使用RoboGuice的好處
不需要初始化控件,如有需要就用@InjectViews。
不需要初始化系統(tǒng)服務(wù),如有需要就用@Inject。
不需要初始化像Drawable,string以及其他的資源,如有需要就用@InjectResource。
以上實(shí)踐能幫助你精簡(jiǎn)代碼。
越少的代碼,越少的問(wèn)題和bugs。
少量的代碼讓Android開(kāi)發(fā)人員省力同時(shí),也讓他們能更專注于實(shí)際的業(yè)務(wù)邏輯。
RoboGuice和ActionBarSherlock
正如我前面提到的,你得在RoboActivity和RoboFragment中繼承其中一個(gè)才能在Activity事件或Fragment中使用RoboGuice。但是如果你已經(jīng)在項(xiàng)目中使用了ActionBarSherlock去編譯呢?那問(wèn)題就在于,你已經(jīng)繼承了SherlockActivity或SherlockFragmentActivity中的一個(gè)。現(xiàn)在問(wèn)題是,你不能同時(shí)使用RoboGuice和ActionBarSherlock。
解決方法是,為Activities和Fragments定義一個(gè)基類。然后你就能同時(shí)使用RoboGuice和ActionBarSherlock了。
你可以在這里下載一些基類:
https://github.com/rtyley/roboguice-sherlock?或者下載JAR包也是一樣:RoboGuice+Sherlock.jar,你可以任選一個(gè)添加到你的項(xiàng)目。
在Android應(yīng)用程序中,我想我已經(jīng)做了所有關(guān)于RoboGuice用法及好處的研究。如過(guò)有什么遺漏,請(qǐng)聯(lián)系我。在接下來(lái)的文章,我會(huì)研究其他的函數(shù)庫(kù)好讓你成為一個(gè)既能偷懶又高效的Android開(kāi)發(fā)人員。
原文:http://mjava.org/1506.shtml
轉(zhuǎn)載于:https://my.oschina.net/u/256102/blog/203199
總結(jié)
以上是生活随笔為你收集整理的RoboGuice入门的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 运用Edraw为WPF应用程序嵌入Off
- 下一篇: jquery post 同步异步总结