将Dagger2与PreferenceFragmentCompat一起使用

时间:2019-09-19 13:01:11

标签: android dagger-2 preferencefragment

我正在使用Dagger2在我的应用程序中进行依赖注入。我有一个使用PreferenceFragmentCompat构建的“设置”屏幕。但是由于Dagger2没有为PreferenceFragmentCompat提供相应的类型(就像它提供了DaggerActivity来代替ActivityDaggerFragment来代替Fragment),在我的“设置”片段中注入依赖项时如何使用AndroidInjection.inject(this)

1 个答案:

答案 0 :(得分:2)

AndroidInjection.inject(fragment)要求fragment实现dagger.android.HasAndroidInjector,可以从dagger.android.AndroidInjection source code中读取。

HasAndroidInjector的实现方式与DaggerFragment的实现方式(source)一样。

public class SettingsFragment
  extends PreferenceFragmentCompat
  implements HasAndroidInjector {

  @Inject DispatchingAndroidInjector<Object> androidInjector;

  @Override
  public void onAttach(Context context) {
    AndroidSupportInjection.inject(this);
    super.onAttach(context);
  }

  @Override
  public AndroidInjector<Object> androidInjector() {
    return androidInjector;
  }

  /* Other code */
}