作app的時候,常常遇到這樣的需求:將數據放置在Intent中,再經過startActivity方法傳給下一個Activity。經常使用寫法以下所示:git
Intent intent = new Intent(this, StickyTabActivity.class); intent.putExtra("string", "sdsd"); intent.putExtra("int", 101); intent.putExtra("boolean", true); intent.putExtra("object", DummyContent.ITEMS.get(0)); startActivity(intent);
在StickyTabActivity中,經過以下代碼取出數據:github
mBoolean = getIntent().getBooleanExtra("boolean", true);
若是使用IntentInjector
,在StickyTabActivity中,能夠這樣寫:app
@InjectIntent("object") public DummyContent.DummyItem mData; @InjectIntent("int") private Integer mI; @InjectIntent("boolean") private boolean bool;
再調用:maven
IntentInjector.inject(this);
此後,@InjectIntent標註的成員變量便可得到傳遞的數據。成員變量可爲private。@InjectIntent支持標註方法,以下所示:this
@InjectIntent("string") public void testInject(String data) { Log.d(TAG, "testInject: " + data); }
要求方法爲public,僅有一個參數。code
IntentInjector的源碼以下所示:get
https://github.com/legendmohe/IntentInjector/tree/master源碼
compile 'com.legendmohe.maven:intentinjector:0.1'
<dependency> <groupId>com.legendmohe.maven</groupId> <artifactId>intentinjector</artifactId> <version>0.1</version> <type>pom</type> </dependency>