与Dagger2一起使用Android依赖注入

时间:2016-12-12 05:02:24

标签: android android-intent dagger-2

我在我的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;

非常感谢您的回答

1 个答案:

答案 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);