ArticlesListFragment: use constructor dependency injection
authorDa Risk <da_risk@geekorum.com>
Wed, 27 Mar 2019 17:21:31 -0700
changeset 168 3fc6dcd9f6ed
parent 167 5e08799de5fb
child 169 048195905536
ArticlesListFragment: use constructor dependency injection
app/src/main/java/com/geekorum/ttrss/articles_list/ArticleListActivity.kt
app/src/main/java/com/geekorum/ttrss/articles_list/ArticlesListFragment.java
app/src/main/java/com/geekorum/ttrss/articles_list/di.kt
--- a/app/src/main/java/com/geekorum/ttrss/articles_list/ArticleListActivity.kt	Wed Mar 27 17:07:42 2019 -0700
+++ b/app/src/main/java/com/geekorum/ttrss/articles_list/ArticleListActivity.kt	Wed Mar 27 17:21:31 2019 -0700
@@ -259,7 +259,7 @@
         title = feed.title
         binding.toolbar.toolbar.title = title
         supportFragmentManager.commit {
-            val hf = ArticlesListFragment.newInstance(feed.id)
+            val hf = ArticlesListFragment.newInstance(supportFragmentManager.fragmentFactory, feed.id)
             replace(R.id.middle_pane_layout, hf, FRAGMENT_ARTICLES_LIST)
         }
         if (twoPane) {
--- a/app/src/main/java/com/geekorum/ttrss/articles_list/ArticlesListFragment.java	Wed Mar 27 17:07:42 2019 -0700
+++ b/app/src/main/java/com/geekorum/ttrss/articles_list/ArticlesListFragment.java	Wed Mar 27 17:21:31 2019 -0700
@@ -27,25 +27,29 @@
 import android.view.ViewGroup;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
+import androidx.fragment.app.FragmentFactory;
 import androidx.lifecycle.ViewModelProviders;
 import androidx.recyclerview.widget.DefaultItemAnimator;
 import androidx.recyclerview.widget.ItemTouchHelper;
 import androidx.recyclerview.widget.RecyclerView;
 import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
+import com.geekorum.geekdroid.dagger.DaggerDelegateFragmentFactory;
+import com.geekorum.geekdroid.dagger.DaggerDelegateViewModelsFactory;
 import com.geekorum.geekdroid.views.recyclerview.ItemSwiper;
 import com.geekorum.geekdroid.views.recyclerview.ScrollFromBottomAppearanceItemAnimator;
-import com.geekorum.ttrss.BaseFragment;
+import com.geekorum.ttrss.BaseFragment2;
 import com.geekorum.ttrss.R;
 import com.geekorum.ttrss.data.Article;
 import com.geekorum.ttrss.databinding.FragmentArticleListBinding;
 import com.google.android.material.snackbar.BaseTransientBottomBar;
 import com.google.android.material.snackbar.Snackbar;
-import dagger.android.support.AndroidSupportInjection;
+
+import javax.inject.Inject;
 
 /**
  * Display all the articles in a list.
  */
-public class ArticlesListFragment extends BaseFragment {
+public class ArticlesListFragment extends BaseFragment2 {
     private static final String ARG_FEED_ID = "feed_id";
 
     private long feedId;
@@ -57,8 +61,9 @@
     private ActivityViewModel activityViewModel;
     private Snackbar setUnreadSnackbar = null;
 
-    public ArticlesListFragment() {
-        // Required public constructor
+    @Inject
+    public ArticlesListFragment(@NonNull DaggerDelegateViewModelsFactory viewModelsFactory, DaggerDelegateFragmentFactory fragmentFactory) {
+        super(viewModelsFactory, fragmentFactory);
     }
 
     /**
@@ -69,8 +74,9 @@
      *
      * @return A new instance of fragment ArticlesListFragment.
      */
-    public static ArticlesListFragment newInstance(long feedId) {
-        ArticlesListFragment fragment = new ArticlesListFragment();
+    public static ArticlesListFragment newInstance(FragmentFactory fragmentFactory, long feedId) {
+        ArticlesListFragment fragment = (ArticlesListFragment) fragmentFactory.instantiate(ArticlesListFragment.class.getClassLoader(),
+                ArticlesListFragment.class.getName());
         Bundle args = new Bundle();
         args.putLong(ARG_FEED_ID, feedId);
         fragment.setArguments(args);
@@ -78,12 +84,6 @@
     }
 
     @Override
-    public void onAttach(Context context) {
-        AndroidSupportInjection.inject(this);
-        super.onAttach(context);
-    }
-
-    @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         feedId = getArguments().getLong(ARG_FEED_ID);
--- a/app/src/main/java/com/geekorum/ttrss/articles_list/di.kt	Wed Mar 27 17:07:42 2019 -0700
+++ b/app/src/main/java/com/geekorum/ttrss/articles_list/di.kt	Wed Mar 27 17:21:31 2019 -0700
@@ -74,8 +74,10 @@
 @Module(includes = [ViewModelModule::class])
 abstract class FragmentsInjectorModule {
 
-    @ContributesAndroidInjector
-    internal abstract fun contributesArticleListFragmentInjector(): ArticlesListFragment
+    @Binds
+    @IntoMap
+    @FragmentKey(ArticlesListFragment::class)
+    abstract fun bindArticlesListFragment(articlesListFragment: ArticlesListFragment): Fragment
 
     @Binds
     @IntoMap
@@ -99,7 +101,7 @@
 }
 
 @Module
-private abstract class ActivityViewModelModule{
+private abstract class ActivityViewModelModule {
     @Binds
     @IntoMap
     @ViewModelKey(ActivityViewModel::class)