tux-world
tux-world

Reputation: 2720

Android injecting class return null

I'm using JobQueue library and i can successful inject some class such as GithubService to that for example:

public interface GithubService {
    @GET("repositories")
    Call<List<GithubRepo>> getAllRepositories();
}

now i'm trying to inject other class as RxBus

public interface Bus {

    void register(@NonNull Object observer);

    <T> CustomSubscriber<T> obtainSubscriber(@NonNull Class<T> eventClass, @NonNull Consumer<T> receiver);

    <T> void registerSubscriber(@NonNull Object observer, @NonNull CustomSubscriber<T> subscriber);

    void unregister(@NonNull Object observer);

    void post(@NonNull Object event);

}

into job file, but i get null

job class:

public class GetLatestRepositories extends Job implements JobManagerInjectable {
    @Inject
    transient GithubService githubService;

    @Inject
    transient Bus eventBus;

    private Call<List<GithubRepo>> repositoryCall;

    public GetLatestRepositories() {
        super(new Params(JobPriority.MID).requireNetwork().persist());
        eventBus.register(this); /* IS NULL*/
    }

    @Override
    public void onAdded() {
    }

    ...

    @Override
    public void inject(ApplicationComponent component) {
        component.inject(this);
    }
}

ApplicationComponent

@ActivitiesScope
@Component(dependencies = GithubApplicationComponent.class)
public interface ApplicationComponent {
    void inject(ActivityRegister activityRegister);

    void inject(ActivityStartUpApplication activityStartUpApplication);

    void inject(GetLatestRepositories getLatestRepositories);
}

GithubApplicationComponent

@AlachiqApplicationScope
@Component(
        modules = {
                UserInformationModule.class,
                NetworkServiceModule.class,
                PicassoModule.class,
                JobManagerModule.class,
                RxModule.class,
                ActivityModule.class
        }
)
public interface GithubApplicationComponent {
    Picasso getPicasso();
    GithubService getGithubService();
    JobManager getJobManager();
    Bus getBus();
}

RxModule

@Module
public class RxModule {
    @Provides
    @AlachiqApplicationScope
    public Bus getBus() {
        return new RxBus();
    }
}

RxBux files

Upvotes: 0

Views: 605

Answers (1)

azizbekian
azizbekian

Reputation: 62189

In RxModule instead of:

return new RxBus();

Do:

return BusProvider.getInstance();

Upvotes: 2

Related Questions