我在我的android代码中了解了Dagger2 DI,在我的活动中,我创建了一个Intent来调用Phone Activity,我想知道是否可以在我的活动中注入Intent Class?所以我不需要像这样的代码使用Intent intent = new Intent():
Intent call=new Intent(Intent.ACTION_DIAL);
call.setData(Uri.parse("tel:" + textView.getText().toString()));
startActivity(call);
我可以像注射演示者一样注入意图吗?
@Inject
DetailScreenPresenter detailScreenPresenter;
非常感谢您的回答
答案 0 :(得分:0)
你应该注入实例化的Intent并自己设置其余的。您不应该注入在它们已经注入之前执行操作的服务或活动,它的代码设计很糟糕,当然也很难调试。
要注入,请确保使用@Provides
为模块中的方法添加注释,并确保不要使用 @singleton
进行注释。每次注入时都会返回新实例。
public class IntentDialer extends Intent {
public IntentDialier() {
super(Intent.ACTION_DIAL);
...
}
}
@Module
public class ProviderModule {
@Provides
IntentDialer provideIntentDialer() {
return new IntentDialer();
}
}
intentDialer.setData(myUrl.toString());
doSomething(intentDialer);