如何注入使用带有匕首2的意图值的依赖项?

时间:2019-05-19 16:37:09

标签: android dependency-injection dagger-2

我遇到的情况是我的Retrofit类BaseUrl需要来自Activity的Intent值。如何在Dagger2模块中处理该问题。我在DaggerAppCompatActivity中使用Dagger2(dagger:2.13)。

我尝试将数据存储在sharedpreference中,然后通过dagger 2模块用于另一个活动中,但是我认为这样无效。

1 个答案:

答案 0 :(得分:0)

Easiest was  to use ApplicationContext Getter and setters e.g. 
public class MaaApplication extends DaggerApplication {

    public String getBaseUrl() {
        return baseUrl;
    }

    public void setBaseUrl(String baseUrl) {
        this.baseUrl = baseUrl;
    }


    private String baseUrl="";
}


public class SampleActivity extends DaggerAppCompatActivity im {

   @Inject
    IPinPadPresenter pinPadPresenter;


    private void bootStrapApplicationContext()
    {
       try {
           MaaApplication maaApplication=(MaaApplication) getApplicationContext();
String baseUrl= getIntent().getExtras().getString(ConfigConstant.BaseURl);
           maaApplication.setBaseUrl(baseUrl);

       }
      catch (Exception ex)
      {
          if(BuildConfig.DEBUG)
              Timber.e(ex);
      }
    }

 @Override
    protected void onCreate(Bundle savedInstanceState) {

         bootStrapApplicationContext();
    }


@Module
public abstract class SampleActivityModule {
    @Binds
    public abstract Context bindContext(Application application);

   @Named("baseURL")
    @Provides
   static String providebaseUrlDependency(Context context,ITR itr ) {
        String baseUrl =  ((MaaApplication)context).getBaseUrl();

        return baseUrl;
    }
}


}