作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>