Использование Dagger2 с PreferenceFragmentCompat - PullRequest
1 голос
/ 19 сентября 2019

Я работаю над внедрением зависимостей в моем приложении, используя Dagger2.У меня есть экран настроек, построенный с использованием PreferenceFragmentCompat.Но поскольку Dagger2 не предоставляет соответствующий тип для PreferenceFragmentCompat (как, например, DaggerActivity для замены Activity и DaggerFragment для замены Fragment), как я могу использовать AndroidInjection.inject(this) при внедрении зависимостей внутримой фрагмент настроек?

1 Ответ

2 голосов
/ 19 сентября 2019

AndroidInjection.inject(fragment) требует fragment для реализации dagger.android.HasAndroidInjector, что можно прочитать из dagger.android.AndroidInjection исходного кода .

HasAndroidInjector может быть реализовано так же, как DaggerFragment реализовано ( источник ).

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 */
}
...