From 8df0055a5afb034aa54a6aeec616d3582917c3cb Mon Sep 17 00:00:00 2001
From: Shashank Kumar <126143257+shashankiitbhu@users.noreply.github.com>
Date: Wed, 20 Mar 2024 05:51:51 +0530
Subject: [PATCH] Migrated CategoryDetailsActivity , MainActivity to View
Binding (#5595)
* Butterknife to ViewBinding
* code fix to pass all tests
---
.../category/CategoryDetailsActivity.java | 35 +++--
.../commons/contributions/MainActivity.java | 43 +++---
.../fragments/NearbyParentFragment.java | 2 +-
.../commons/settings/SettingsActivity.java | 138 +++++++++---------
.../res/layout/activity_category_details.xml | 6 +-
app/src/main/res/layout/activity_settings.xml | 2 +-
app/src/main/res/layout/main.xml | 4 +-
.../contributions/MainActivityUnitTests.kt | 2 +-
8 files changed, 116 insertions(+), 116 deletions(-)
diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategoryDetailsActivity.java b/app/src/main/java/fr/free/nrw/commons/category/CategoryDetailsActivity.java
index b5d13f4c7..457bd48c6 100644
--- a/app/src/main/java/fr/free/nrw/commons/category/CategoryDetailsActivity.java
+++ b/app/src/main/java/fr/free/nrw/commons/category/CategoryDetailsActivity.java
@@ -15,13 +15,12 @@ import androidx.appcompat.widget.Toolbar;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.viewpager.widget.ViewPager;
-import butterknife.BindView;
-import butterknife.ButterKnife;
import com.google.android.material.tabs.TabLayout;
import fr.free.nrw.commons.Media;
import fr.free.nrw.commons.R;
import fr.free.nrw.commons.Utils;
import fr.free.nrw.commons.ViewPagerAdapter;
+import fr.free.nrw.commons.databinding.ActivityCategoryDetailsBinding;
import fr.free.nrw.commons.explore.categories.media.CategoriesMediaFragment;
import fr.free.nrw.commons.explore.categories.parent.ParentCategoriesFragment;
import fr.free.nrw.commons.explore.categories.sub.SubCategoriesFragment;
@@ -45,23 +44,23 @@ public class CategoryDetailsActivity extends BaseActivity
private CategoriesMediaFragment categoriesMediaFragment;
private MediaDetailPagerFragment mediaDetails;
private String categoryName;
- @BindView(R.id.mediaContainer) FrameLayout mediaContainer;
- @BindView(R.id.tab_layout) TabLayout tabLayout;
- @BindView(R.id.viewPager) ViewPager viewPager;
- @BindView(R.id.toolbar) Toolbar toolbar;
ViewPagerAdapter viewPagerAdapter;
+ private ActivityCategoryDetailsBinding binding;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_category_details);
- ButterKnife.bind(this);
+
+ binding = ActivityCategoryDetailsBinding.inflate(getLayoutInflater());
+ final View view = binding.getRoot();
+ setContentView(view);
supportFragmentManager = getSupportFragmentManager();
viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager());
- viewPager.setAdapter(viewPagerAdapter);
- viewPager.setOffscreenPageLimit(2);
- tabLayout.setupWithViewPager(viewPager);
- setSupportActionBar(toolbar);
+ binding.viewPager.setAdapter(viewPagerAdapter);
+ binding.viewPager.setOffscreenPageLimit(2);
+ binding.tabLayout.setupWithViewPager(binding.viewPager);
+ setSupportActionBar(binding.toolbarBinding.toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
setTabs();
setPageTitle();
@@ -110,9 +109,9 @@ public class CategoryDetailsActivity extends BaseActivity
*/
@Override
public void onMediaClicked(int position) {
- tabLayout.setVisibility(View.GONE);
- viewPager.setVisibility(View.GONE);
- mediaContainer.setVisibility(View.VISIBLE);
+ binding.tabLayout.setVisibility(View.GONE);
+ binding.viewPager.setVisibility(View.GONE);
+ binding.mediaContainer.setVisibility(View.VISIBLE);
if (mediaDetails == null || !mediaDetails.isVisible()) {
// set isFeaturedImage true for featured images, to include author field on media detail
mediaDetails = MediaDetailPagerFragment.newInstance(false, true);
@@ -216,9 +215,9 @@ public class CategoryDetailsActivity extends BaseActivity
@Override
public void onBackPressed() {
if (supportFragmentManager.getBackStackEntryCount() == 1){
- tabLayout.setVisibility(View.VISIBLE);
- viewPager.setVisibility(View.VISIBLE);
- mediaContainer.setVisibility(View.GONE);
+ binding.tabLayout.setVisibility(View.VISIBLE);
+ binding.viewPager.setVisibility(View.VISIBLE);
+ binding.mediaContainer.setVisibility(View.GONE);
}
super.onBackPressed();
}
diff --git a/app/src/main/java/fr/free/nrw/commons/contributions/MainActivity.java b/app/src/main/java/fr/free/nrw/commons/contributions/MainActivity.java
index c68f7056f..d6b508f65 100644
--- a/app/src/main/java/fr/free/nrw/commons/contributions/MainActivity.java
+++ b/app/src/main/java/fr/free/nrw/commons/contributions/MainActivity.java
@@ -12,15 +12,13 @@ import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
-import android.widget.FrameLayout;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import androidx.appcompat.widget.Toolbar;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
+import androidx.viewpager.widget.ViewPager;
import androidx.work.ExistingWorkPolicy;
-import butterknife.BindView;
-import butterknife.ButterKnife;
+import fr.free.nrw.commons.databinding.MainBinding;
import fr.free.nrw.commons.CommonsApplication;
import fr.free.nrw.commons.R;
import fr.free.nrw.commons.WelcomeActivity;
@@ -63,14 +61,6 @@ public class MainActivity extends BaseActivity
ContributionController controller;
@Inject
ContributionDao contributionDao;
- @BindView(R.id.toolbar)
- Toolbar toolbar;
- @BindView(R.id.pager)
- public UnswipableViewPager viewPager;
- @BindView(R.id.fragmentContainer)
- public FrameLayout fragmentContainer;
- @BindView(R.id.fragment_main_nav_tab_layout)
- NavTabLayout tabLayout;
private ContributionsFragment contributionsFragment;
private NearbyParentFragment nearbyParentFragment;
@@ -95,6 +85,11 @@ public class MainActivity extends BaseActivity
public Menu menu;
+ public MainBinding binding;
+
+ NavTabLayout tabLayout;
+
+
/**
* Consumers should be simply using this method to use this activity.
*
@@ -122,11 +117,13 @@ public class MainActivity extends BaseActivity
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ binding = MainBinding.inflate(getLayoutInflater());
+ setContentView(binding.getRoot());
+ setSupportActionBar(binding.toolbarBinding.toolbar);
+ tabLayout = binding.fragmentMainNavTabLayout;
loadLocale();
- setContentView(R.layout.main);
- ButterKnife.bind(this);
- setSupportActionBar(toolbar);
- toolbar.setNavigationOnClickListener(view -> {
+
+ binding.toolbarBinding.toolbar.setNavigationOnClickListener(view -> {
onSupportNavigateUp();
});
/*
@@ -177,11 +174,11 @@ public class MainActivity extends BaseActivity
}
public void setSelectedItemId(int id) {
- tabLayout.setSelectedItemId(id);
+ binding.fragmentMainNavTabLayout.setSelectedItemId(id);
}
private void setUpPager() {
- tabLayout.setOnNavigationItemSelectedListener(navListener = (item) -> {
+ binding.fragmentMainNavTabLayout.setOnNavigationItemSelectedListener(navListener = (item) -> {
if (!item.getTitle().equals(getString(R.string.more))) {
// do not change title for more fragment
setTitle(item.getTitle());
@@ -196,7 +193,7 @@ public class MainActivity extends BaseActivity
private void setUpLoggedOutPager() {
loadFragment(ExploreFragment.newInstance(),false);
- tabLayout.setOnNavigationItemSelectedListener(item -> {
+ binding.fragmentMainNavTabLayout.setOnNavigationItemSelectedListener(item -> {
if (!item.getTitle().equals(getString(R.string.more))) {
// do not change title for more fragment
setTitle(item.getTitle());
@@ -258,11 +255,11 @@ public class MainActivity extends BaseActivity
}
public void hideTabs() {
- tabLayout.setVisibility(View.GONE);
+ binding.fragmentMainNavTabLayout.setVisibility(View.GONE);
}
public void showTabs() {
- tabLayout.setVisibility(View.VISIBLE);
+ binding.fragmentMainNavTabLayout.setVisibility(View.VISIBLE);
}
/**
@@ -317,7 +314,7 @@ public class MainActivity extends BaseActivity
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
- outState.putInt("viewPagerCurrentItem", viewPager.getCurrentItem());
+ outState.putInt("viewPagerCurrentItem", binding.pager.getCurrentItem());
outState.putString("activeFragment", activeFragment.name());
}
@@ -472,7 +469,7 @@ public class MainActivity extends BaseActivity
* Public method to show nearby from the reference of this.
*/
public void showNearby() {
- tabLayout.setSelectedItemId(NavTab.NEARBY.code());
+ binding.fragmentMainNavTabLayout.setSelectedItemId(NavTab.NEARBY.code());
}
public enum ActiveFragment {
diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.java b/app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.java
index a9a47baba..094687619 100644
--- a/app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.java
+++ b/app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.java
@@ -1322,7 +1322,7 @@ public class NearbyParentFragment extends CommonsDaggerSupportFragment
@Override
public void setTabItemContributions() {
- ((MainActivity) getActivity()).viewPager.setCurrentItem(0);
+ ((MainActivity) getActivity()).binding.pager.setCurrentItem(0);
// TODO
}
diff --git a/app/src/main/java/fr/free/nrw/commons/settings/SettingsActivity.java b/app/src/main/java/fr/free/nrw/commons/settings/SettingsActivity.java
index 49fe9bf13..fd231597b 100644
--- a/app/src/main/java/fr/free/nrw/commons/settings/SettingsActivity.java
+++ b/app/src/main/java/fr/free/nrw/commons/settings/SettingsActivity.java
@@ -1,69 +1,69 @@
-package fr.free.nrw.commons.settings;
-
-import android.os.Bundle;
-import android.view.MenuItem;
-
-import android.view.View;
-import androidx.appcompat.app.AppCompatDelegate;
-
-import fr.free.nrw.commons.databinding.ActivitySettingsBinding;
-import fr.free.nrw.commons.theme.BaseActivity;
-
-/**
- * allows the user to change the settings
- */
-public class SettingsActivity extends BaseActivity {
-
- private ActivitySettingsBinding binding;
- private AppCompatDelegate settingsDelegate;
- /**
- * to be called when the activity starts
- * @param savedInstanceState the previously saved state
- */
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- binding = ActivitySettingsBinding.inflate(getLayoutInflater());
- final View view = binding.getRoot();
- setContentView(view);
-
- setSupportActionBar(binding.toolbarBinding.toolbar);
- getSupportActionBar().setDisplayHomeAsUpEnabled(true);
- }
-
- // Get an action bar
- /**
- * takes care of actions taken after the creation has happened
- * @param savedInstanceState the saved state
- */
- @Override
- protected void onPostCreate(Bundle savedInstanceState) {
- super.onPostCreate(savedInstanceState);
- if (settingsDelegate == null) {
- settingsDelegate = AppCompatDelegate.create(this, null);
- }
- settingsDelegate.onPostCreate(savedInstanceState);
- }
-
- @Override
- public boolean onSupportNavigateUp() {
- onBackPressed();
- return true;
- }
-
- /**
- * Handle action-bar clicks
- * @param item the selected item
- * @return true on success, false on failure
- */
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- switch (item.getItemId()) {
- case android.R.id.home:
- finish();
- return true;
- default:
- return super.onOptionsItemSelected(item);
- }
- }
-}
+package fr.free.nrw.commons.settings;
+
+import android.os.Bundle;
+import android.view.MenuItem;
+
+import android.view.View;
+import androidx.appcompat.app.AppCompatDelegate;
+
+import fr.free.nrw.commons.databinding.ActivitySettingsBinding;
+import fr.free.nrw.commons.theme.BaseActivity;
+
+/**
+ * allows the user to change the settings
+ */
+public class SettingsActivity extends BaseActivity {
+
+ private ActivitySettingsBinding binding;
+ private AppCompatDelegate settingsDelegate;
+ /**
+ * to be called when the activity starts
+ * @param savedInstanceState the previously saved state
+ */
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ binding = ActivitySettingsBinding.inflate(getLayoutInflater());
+ final View view = binding.getRoot();
+ setContentView(view);
+
+ setSupportActionBar(binding.toolbarBinding.toolbar);
+ getSupportActionBar().setDisplayHomeAsUpEnabled(true);
+ }
+
+ // Get an action bar
+ /**
+ * takes care of actions taken after the creation has happened
+ * @param savedInstanceState the saved state
+ */
+ @Override
+ protected void onPostCreate(Bundle savedInstanceState) {
+ super.onPostCreate(savedInstanceState);
+ if (settingsDelegate == null) {
+ settingsDelegate = AppCompatDelegate.create(this, null);
+ }
+ settingsDelegate.onPostCreate(savedInstanceState);
+ }
+
+ @Override
+ public boolean onSupportNavigateUp() {
+ onBackPressed();
+ return true;
+ }
+
+ /**
+ * Handle action-bar clicks
+ * @param item the selected item
+ * @return true on success, false on failure
+ */
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ switch (item.getItemId()) {
+ case android.R.id.home:
+ finish();
+ return true;
+ default:
+ return super.onOptionsItemSelected(item);
+ }
+ }
+}
diff --git a/app/src/main/res/layout/activity_category_details.xml b/app/src/main/res/layout/activity_category_details.xml
index f0df5fbf3..a6be3e863 100644
--- a/app/src/main/res/layout/activity_category_details.xml
+++ b/app/src/main/res/layout/activity_category_details.xml
@@ -15,7 +15,9 @@
android:layout_height="wrap_content"
android:background="?attr/mainBackground">
-
+
-
\ No newline at end of file
+
diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml
index 70db3d5f3..96b649cbe 100644
--- a/app/src/main/res/layout/activity_settings.xml
+++ b/app/src/main/res/layout/activity_settings.xml
@@ -29,4 +29,4 @@
tools:layout="@xml/preferences"
/>
-
\ No newline at end of file
+
diff --git a/app/src/main/res/layout/main.xml b/app/src/main/res/layout/main.xml
index 91ba13a35..ef199d294 100644
--- a/app/src/main/res/layout/main.xml
+++ b/app/src/main/res/layout/main.xml
@@ -7,7 +7,9 @@
android:gravity="center_horizontal"
android:orientation="vertical">
-
+