Guest User

Untitled

a guest
Jan 22nd, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.83 KB | None | 0 0
  1. Error:(6, 48) error: cannot find symbol class DaggerApplicationComponent
  2. /home/moderator/Downloads/Maulik/Sample Codes/Made/Dagger2Demo/app/src/main/java/com/dagger2demo/dagger2demo/di/component/ApplicationComponent.java
  3. 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.
  4. com.dagger2demo.dagger2demo.mvp.HomePresenter is injected at
  5. com.dagger2demo.dagger2demo.mvp.BaseActivity.homePresenter
  6. com.dagger2demo.dagger2demo.mvp.BaseActivity is injected at
  7. com.dagger2demo.dagger2demo.di.component.ApplicationComponent.inject(baseActivity)
  8. Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
  9. > Compilation failed; see the compiler error output for details.
  10.  
  11. // Retrofit Dependency
  12. compile 'com.squareup.retrofit2:retrofit:2.3.0'
  13.  
  14. // Gson Converter Factory Dependency
  15. compile 'com.squareup.retrofit2:converter-gson:2.3.0'
  16.  
  17. // RxJava2 Adapter Dependency for Retrofit2
  18. compile 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
  19.  
  20. // ButterKnife Dependencies
  21. compile 'com.jakewharton:butterknife:8.8.1'
  22. annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
  23.  
  24. // RxJava & RxAndroid Dependencies
  25. compile group: 'io.reactivex.rxjava2', name: 'rxjava', version: '2.1.8'
  26. compile group: 'io.reactivex.rxjava2', name: 'rxandroid', version: '2.0.1'
  27.  
  28. // Dagger2 Dependency
  29. compile 'com.google.dagger:dagger:2.14.1'
  30. annotationProcessor 'com.google.dagger:dagger-compiler:2.14.1'
  31.  
  32. public class Dagger2DemoApplication extends Application {
  33.  
  34. private ApplicationComponent mApplicationComponent;
  35.  
  36. @Override
  37. public void onCreate() {
  38. super.onCreate();
  39.  
  40. mApplicationComponent = DaggerApplicationComponent.builder()
  41. .applicationModule(new ApplicationModule())
  42. .build();
  43. }
  44.  
  45. public ApplicationComponent getmApplicationComponent() {
  46. return mApplicationComponent;
  47. }
  48. }
  49.  
  50. @Module
  51. public class ApplicationModule {
  52.  
  53. @Provides
  54. @Singleton
  55. public APIEndPoints provideAPIEndPoints() {
  56.  
  57. Retrofit retrofit = new Retrofit.Builder()
  58. .baseUrl("https://reqres.in/")
  59. .addConverterFactory(GsonConverterFactory.create())
  60. .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
  61. .build();
  62.  
  63. APIEndPoints apiEndPoints = retrofit.create(APIEndPoints.class);
  64.  
  65. return apiEndPoints;
  66. }
  67. }
  68.  
  69. @Singleton
  70. @Component(modules = {ApplicationModule.class})
  71. public interface ApplicationComponent {
  72.  
  73. void inject(BaseActivity baseActivity);
  74. }
  75.  
  76. public class BaseActivity extends AppCompatActivity {
  77.  
  78. // Variables
  79. public ProgressDialog mProgressDialog;
  80.  
  81. @Inject
  82. HomePresenter homePresenter;
  83.  
  84. @Override
  85. protected void onCreate(Bundle savedInstanceState) {
  86. super.onCreate(savedInstanceState);
  87.  
  88. // For Dagger2 i.e Creating instance of all provide methods defined in ApplicationModule
  89. ((Dagger2DemoApplication) getApplication()).getmApplicationComponent().inject(this);
  90.  
  91. setupProgressBar();
  92. }
  93.  
  94. private void setupProgressBar() {
  95. mProgressDialog = new ProgressDialog(this);
  96. mProgressDialog.setTitle(getString(R.string.str_progress_dialog_title));
  97. mProgressDialog.setMessage(getString(R.string.str_progress_dialog_desc));
  98. mProgressDialog.setCancelable(false);
  99. }
  100. }
  101.  
  102. public interface BaseView extends View {
  103.  
  104. void handleResponse(Object obj);
  105.  
  106. void showMessage(String msg);
  107. }
  108.  
  109. public interface View {
  110.  
  111. }
  112.  
  113. public interface BasePresenter {
  114.  
  115. void attachView(View view);
  116.  
  117. void callAPI();
  118. }
  119.  
  120. public class HomePresenter implements BasePresenter {
  121.  
  122. private BaseView mBaseView;
  123.  
  124. @Inject
  125. APIEndPoints mApiEndPoints;
  126.  
  127. /*@Inject
  128. public HomePresenter(APIEndPoints apiEndPoints) {
  129. this.mApiEndPoints = apiEndPoints;
  130. }*/
  131.  
  132. @Override
  133. public void attachView(View view) {
  134. mBaseView = (BaseView) view;
  135. }
  136.  
  137. @Override
  138. public void callAPI() {
  139.  
  140. // Actually calling API here with observable object - Start
  141. Observable<Users> usersObservable = mApiEndPoints.getUsers();
  142.  
  143. usersObservable
  144. .subscribeOn(Schedulers.newThread())
  145. .observeOn(AndroidSchedulers.mainThread())
  146. .subscribe(this::onSuccess, this::onError);
  147. // Actually calling API here with observable object - End
  148. }
  149.  
  150. private void onSuccess(Users users) {
  151. mBaseView.handleResponse(users);
  152. }
  153.  
  154. private void onError(Throwable throwable) {
  155. mBaseView.showMessage(throwable.toString());
  156. }
  157. }
  158.  
  159. public class HomeActivity extends BaseActivity implements BaseView {
  160.  
  161. // Widgets
  162. @BindView(R.id.rv_users)
  163. RecyclerView rv_users;
  164.  
  165. @Override
  166. protected void onCreate(Bundle savedInstanceState) {
  167. super.onCreate(savedInstanceState);
  168. setContentView(R.layout.activity_main);
  169.  
  170. // For ButterKnife
  171. ButterKnife.bind(this);
  172.  
  173. // Initializing Presenter
  174. homePresenter.attachView(this);
  175. }
  176.  
  177. public void getDataFromServer(View view) {
  178. mProgressDialog.show();
  179. homePresenter.callAPI();
  180. }
  181.  
  182. // BaseView Methods
  183. @Override
  184. public void handleResponse(Object obj) {
  185. Users users;
  186. if (obj instanceof Users) {
  187. users = (Users) obj;
  188. if (users != null) {
  189. mProgressDialog.dismiss();
  190. rv_users.setLayoutManager(new LinearLayoutManager(HomeActivity.this));
  191. rv_users.setAdapter(new RVAdapter(users.getData()));
  192. }
  193. }
  194. }
  195.  
  196. @Override
  197. public void showMessage(String msg) {
  198. if (msg != null) {
  199. mProgressDialog.dismiss();
  200. Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
  201. }
  202. }
  203. }
Add Comment
Please, Sign In to add comment