Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Error:(6, 48) error: cannot find symbol class DaggerApplicationComponent
- /home/moderator/Downloads/Maulik/Sample Codes/Made/Dagger2Demo/app/src/main/java/com/dagger2demo/dagger2demo/di/component/ApplicationComponent.java
- Error:(18, 10) error: com.dagger2demo.dagger2demo.mvp.HomePresenter cannot be provided without an @Inject constructor or from an @Provides- or @Produces-annotated method. This type supports members injection but cannot be implicitly provided.
- com.dagger2demo.dagger2demo.mvp.HomePresenter is injected at
- com.dagger2demo.dagger2demo.mvp.BaseActivity.homePresenter
- com.dagger2demo.dagger2demo.mvp.BaseActivity is injected at
- com.dagger2demo.dagger2demo.di.component.ApplicationComponent.inject(baseActivity)
- Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
- > Compilation failed; see the compiler error output for details.
- // Retrofit Dependency
- compile 'com.squareup.retrofit2:retrofit:2.3.0'
- // Gson Converter Factory Dependency
- compile 'com.squareup.retrofit2:converter-gson:2.3.0'
- // RxJava2 Adapter Dependency for Retrofit2
- compile 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
- // ButterKnife Dependencies
- compile 'com.jakewharton:butterknife:8.8.1'
- annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
- // RxJava & RxAndroid Dependencies
- compile group: 'io.reactivex.rxjava2', name: 'rxjava', version: '2.1.8'
- compile group: 'io.reactivex.rxjava2', name: 'rxandroid', version: '2.0.1'
- // Dagger2 Dependency
- compile 'com.google.dagger:dagger:2.14.1'
- annotationProcessor 'com.google.dagger:dagger-compiler:2.14.1'
- public class Dagger2DemoApplication extends Application {
- private ApplicationComponent mApplicationComponent;
- @Override
- public void onCreate() {
- super.onCreate();
- mApplicationComponent = DaggerApplicationComponent.builder()
- .applicationModule(new ApplicationModule())
- .build();
- }
- public ApplicationComponent getmApplicationComponent() {
- return mApplicationComponent;
- }
- }
- @Module
- public class ApplicationModule {
- @Provides
- @Singleton
- public APIEndPoints provideAPIEndPoints() {
- Retrofit retrofit = new Retrofit.Builder()
- .baseUrl("https://reqres.in/")
- .addConverterFactory(GsonConverterFactory.create())
- .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
- .build();
- APIEndPoints apiEndPoints = retrofit.create(APIEndPoints.class);
- return apiEndPoints;
- }
- }
- @Singleton
- @Component(modules = {ApplicationModule.class})
- public interface ApplicationComponent {
- void inject(BaseActivity baseActivity);
- }
- public class BaseActivity extends AppCompatActivity {
- // Variables
- public ProgressDialog mProgressDialog;
- @Inject
- HomePresenter homePresenter;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- // For Dagger2 i.e Creating instance of all provide methods defined in ApplicationModule
- ((Dagger2DemoApplication) getApplication()).getmApplicationComponent().inject(this);
- setupProgressBar();
- }
- private void setupProgressBar() {
- mProgressDialog = new ProgressDialog(this);
- mProgressDialog.setTitle(getString(R.string.str_progress_dialog_title));
- mProgressDialog.setMessage(getString(R.string.str_progress_dialog_desc));
- mProgressDialog.setCancelable(false);
- }
- }
- public interface BaseView extends View {
- void handleResponse(Object obj);
- void showMessage(String msg);
- }
- public interface View {
- }
- public interface BasePresenter {
- void attachView(View view);
- void callAPI();
- }
- public class HomePresenter implements BasePresenter {
- private BaseView mBaseView;
- @Inject
- APIEndPoints mApiEndPoints;
- /*@Inject
- public HomePresenter(APIEndPoints apiEndPoints) {
- this.mApiEndPoints = apiEndPoints;
- }*/
- @Override
- public void attachView(View view) {
- mBaseView = (BaseView) view;
- }
- @Override
- public void callAPI() {
- // Actually calling API here with observable object - Start
- Observable<Users> usersObservable = mApiEndPoints.getUsers();
- usersObservable
- .subscribeOn(Schedulers.newThread())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(this::onSuccess, this::onError);
- // Actually calling API here with observable object - End
- }
- private void onSuccess(Users users) {
- mBaseView.handleResponse(users);
- }
- private void onError(Throwable throwable) {
- mBaseView.showMessage(throwable.toString());
- }
- }
- public class HomeActivity extends BaseActivity implements BaseView {
- // Widgets
- @BindView(R.id.rv_users)
- RecyclerView rv_users;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- // For ButterKnife
- ButterKnife.bind(this);
- // Initializing Presenter
- homePresenter.attachView(this);
- }
- public void getDataFromServer(View view) {
- mProgressDialog.show();
- homePresenter.callAPI();
- }
- // BaseView Methods
- @Override
- public void handleResponse(Object obj) {
- Users users;
- if (obj instanceof Users) {
- users = (Users) obj;
- if (users != null) {
- mProgressDialog.dismiss();
- rv_users.setLayoutManager(new LinearLayoutManager(HomeActivity.this));
- rv_users.setAdapter(new RVAdapter(users.getData()));
- }
- }
- }
- @Override
- public void showMessage(String msg) {
- if (msg != null) {
- mProgressDialog.dismiss();
- Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
- }
- }
- }
Add Comment
Please, Sign In to add comment