Dagger2子组件如何注入到Fragment中?

How does Dagger2 subcomponent inject in Fragment?

如何在 Fragment 中注入 dagger2 子组件。我在 Activity 中使用相同的子组件并且效果很好。如何在片段中初始化模块。

我的部分片段

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    DgFirebaseSubComponent.Builder builder = (DgFirebaseSubComponent.Builder)
            ((AttendanceApplication) getActivity().getApplication()).getApplicationComponent()
                    .subcomponentBuilders()
                    .get(DgFirebaseSubComponent.Builder.class)
                    .get();
    builder.activityModule(new DgFirebaseSubModule(??how can i initialize module ??)).build().inject(this);

}

我的DgFirebaseSubComponent.java

@DgFirebaseScope
@Subcomponent(modules={ DgFirebaseSubModule.class })
public interface DgFirebaseSubComponent {

void inject(DgAllEmpsAbsMvvmActivity activity);
void inject(DgAllEmpsAbsListFragment fragment);

SharedPreferences sharedPreferences();

@Subcomponent.Builder
interface Builder extends SubcomponentBuilder<DgFirebaseSubComponent> {
    Builder activityModule(DgFirebaseSubModule module);
    }

}

我的DgFirebaseSubModule.java

@Module
public class DgFirebaseSubModule {
private final DgAllEmpsAbsMvvmActivity activity;

public DgFirebaseSubModule(DgAllEmpsAbsMvvmActivity activity) { this.activity = activity; }


@Provides
@FirebaseScope
SharedPreferences providesSharedPreferences(Application application) {
    return PreferenceManager.getDefaultSharedPreferences(application);
    }


}

模块不必用 activity 实例化。我改了DgFirebaseSubModule.java

@Module
public class DgFirebaseSubModule {

public DgFirebaseSubModule() {  }


@Provides
@FirebaseScope
SharedPreferences providesSharedPreferences(Application application) {
return PreferenceManager.getDefaultSharedPreferences(application);
    }

}

并注入片段

@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);

DgFirebaseSubComponent.Builder builder = (DgFirebaseSubComponent.Builder)
        ((AttendanceApplication) getActivity().getApplication()).getApplicationComponent()
                .subcomponentBuilders()
                .get(DgFirebaseSubComponent.Builder.class)
                .get();
builder.activityModule(new DgFirebaseSubModule()).build().inject(this);

}