安利一个Activity/Fragment接收传值的注解库
BundleInject
是否厌倦了在Activity/Fragment中频繁的getIntent().getExtras()?如果是,这或许就是你的救星。
非常简单的使用步骤:
- 定义好要你要用于接收数据的属性;
- 使用注解Inject,并注明接收的key值;
- 在Activity/Fragment中onCreate方法中调用Injects.inject(this)。
就像这样:
public class MainActivity extends AppCompatActivity {
// 这里的name代表往intent里面put的key值
@Inject("name")
String username;
// 注意不能是final或者private
@Inject("password")
int password;
// 属性可以不传,不传默认为属性名,在此处就是age
@Inject
float age;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 重要,一定要调用这个
Injects.inject(this);
//打印接收到的值
Toast.makeText(this,
String.format(Locale.CHINA, "username=%s\npassword=%d\nage=%s", username, password, age),
Toast.LENGTH_LONG)
.show();
}
......
}
在Fragment中使用同理,也可以在非Activity/Fragment中使用,不过这时候需要传两个参数,即需要注入的类本身和Bundle。
导入依赖
dependencies {
....... // 这是之前的依赖不要动
annotationProcessor 'cn.geektang:inject-complier:1.0.0'
implementation 'cn.geektang:inject-api:1.0.0'
}
如果你用的是kotlin,请把annotationProcessor换成kapt。
如果依赖下载不下来,在build.gradle中的仓库中加入以下仓库:
maven { url 'https://dl.bintray.com/geektang/maven'}
混淆
已处理好混淆事宜,无需额外处理