转载请注明出处:http://blog.csdn.net/liu470368500/article/details/51142099
相信大家很多时候。在Activity进行页面传值时。很苦恼,需要定义各种各样的KEY定义传递数据。在传递时如果参数较多。还得需要到目标Activity中去寻找传递的数据应该是怎么传递才是符合逻辑的。现在好了。有了此框架的加入。相信定能使你的Activity代码更加简洁易懂。再遇到界面跳转传递参数过多的情况。那都不叫事!
processorTool框架使用编译时注解处理。绿色无反射。完全不用担心你的运行效率问题
如何引进processorTool:
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4'
apply plugin: 'com.neenbedankt.android-apt'
dependencies {
...
compile 'org.lzh.compiler.lib:processortool-api:0.1'
apt 'org.lzh.compiler.lib:processortool-compiler:0.1'
}
下面来看具体使用姿势
首先。给你的Activity添加@Params注解:
@Params
public class EmptyActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
}
}
这是Activity跳转无参数传递时的用法,只需要对Activity添加一个@Params注解即可。然后在跳转时。调用一行代码即可:
EmptyActivity_Dispatcher.create().start(MainActivity.this);
EmptyActivity_Dispatcher类即时EmptyActivity添加了注解@Params之后生成的java类,非常方便直观。
如果是跳转时需要传递参数的情况。还有个@Field注解。此注解结合@Params一起使用,如:
@Params(fields = {
@Field(name = "username",type = String.class,),
@Field(name = "password",type = String.class)
})
public class ParamsActivity extends AppCompatActivity {
...
}
传递几个参数。就在Params注解中添加几个Field注解即可。
然后是跳转时的代码:
ParamsActivity_Dispatcher.create()
.setUsername("123456")
.setPassword("111111")
.requestCode(-1)
.start(this);
同样的。生成了以后缀名为_Dispatcher的类。链式调用设置属性值。
start方法也支持使用四种类型的参数进行跳转,Activity,Context,Fragment,V4Fragment:
跳转之后肯定是需要取值啊。框架也对取值进行了封装处理:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_params);
ButterKnife.bind(this);
// 获取传参
ParamsActivity_Dispatcher.RequestData data = ParamsActivity_Dispatcher.getData(getIntent());
username.setText(data.getUsername());
password.setText(data.getPassword());
}
调用生成类ParamsActivity_Dispatcher的getData方法。即可拿到装有全部参数的类RequestData的实例。拿到数据后任性的给界面绑定数据吧!
下面介绍一下Field注解含有的以下五个参数:
FieldType与type结合:以type为String.class为例:
Serializable : 传参类型为原有的String
List : 传参类型为List<String>
array : 传参类型为String[]
set : 传参类型为Set<String>
github地址