diff --git a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsFragment.java b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsFragment.java
index 44678537a..03e3e5611 100644
--- a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsFragment.java
+++ b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsFragment.java
@@ -196,6 +196,10 @@ public class ContributionsFragment
@Override
public void onCreateOptionsMenu(@NonNull final Menu menu, @NonNull final MenuInflater inflater) {
+
+ // Removing contributions menu items for ProfileActivity
+ if (getActivity() instanceof ProfileActivity) { return; }
+
inflater.inflate(R.menu.contribution_activity_notification_menu, menu);
MenuItem notificationsMenuItem = menu.findItem(R.id.notifications);
@@ -339,23 +343,23 @@ public class ContributionsFragment
if (fragment.isAdded() && otherFragment != null) {
transaction.hide(otherFragment);
transaction.show(fragment);
- transaction.addToBackStack(CONTRIBUTION_LIST_FRAGMENT_TAG);
+ transaction.addToBackStack(tag);
transaction.commit();
getChildFragmentManager().executePendingTransactions();
} else if (fragment.isAdded() && otherFragment == null) {
transaction.show(fragment);
- transaction.addToBackStack(CONTRIBUTION_LIST_FRAGMENT_TAG);
+ transaction.addToBackStack(tag);
transaction.commit();
getChildFragmentManager().executePendingTransactions();
}else if (!fragment.isAdded() && otherFragment != null ) {
transaction.hide(otherFragment);
transaction.add(R.id.root_frame, fragment, tag);
- transaction.addToBackStack(CONTRIBUTION_LIST_FRAGMENT_TAG);
+ transaction.addToBackStack(tag);
transaction.commit();
getChildFragmentManager().executePendingTransactions();
} else if (!fragment.isAdded()) {
transaction.replace(R.id.root_frame, fragment, tag);
- transaction.addToBackStack(CONTRIBUTION_LIST_FRAGMENT_TAG);
+ transaction.addToBackStack(tag);
transaction.commit();
getChildFragmentManager().executePendingTransactions();
}
@@ -641,7 +645,7 @@ public class ContributionsFragment
@Override
public void showDetail(int position, boolean isWikipediaButtonDisplayed) {
if (mediaDetailPagerFragment == null || !mediaDetailPagerFragment.isVisible()) {
- mediaDetailPagerFragment = new MediaDetailPagerFragment();
+ mediaDetailPagerFragment = new MediaDetailPagerFragment(false, true);
if(isUserProfile) {
((ProfileActivity)getActivity()).setScroll(false);
}
diff --git a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java
index 782fb4aec..3195796c5 100644
--- a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java
+++ b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java
@@ -78,10 +78,7 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
return removedItems;
}
- public MediaDetailPagerFragment() {
- this(false, false);
- }
-
+ private MediaDetailPagerFragment() {}; // Constructor calls made to be explicit
@SuppressLint("ValidFragment")
public MediaDetailPagerFragment(Boolean editable, boolean isFeaturedImage) {
this.editable = editable;
@@ -107,11 +104,13 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
adapter = new MediaDetailAdapter(getChildFragmentManager());
- if (getActivity() != null) {
- final ActionBar actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar();
- if (actionBar != null) {
- actionBar.setDisplayHomeAsUpEnabled(true);
- }
+ // ActionBar is now supported in both activities - if this crashes something is quite wrong
+ final ActionBar actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar();
+ if (actionBar != null) {
+ actionBar.setDisplayHomeAsUpEnabled(true);
+ }
+ else {
+ throw new AssertionError("Action bar should not be null!");
}
// If fragment is associated with ProfileActivity, then hide the tabLayout
@@ -119,6 +118,11 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
((ProfileActivity)getActivity()).tabLayout.setVisibility(View.GONE);
}
+ // Else if fragment is associated with MainActivity then hide that tab layout
+ else if (getActivity() instanceof MainActivity) {
+ ((MainActivity)getActivity()).hideTabs();
+ }
+
pager.setAdapter(adapter);
if (savedInstanceState != null) {
@@ -127,9 +131,7 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
getActivity().invalidateOptionsMenu();
}
adapter.notifyDataSetChanged();
- if (getActivity() instanceof MainActivity) {
- ((MainActivity)getActivity()).hideTabs();
- }
+
return view;
}
diff --git a/app/src/main/java/fr/free/nrw/commons/profile/ProfileActivity.java b/app/src/main/java/fr/free/nrw/commons/profile/ProfileActivity.java
index 1876e3dc4..1364d78ce 100644
--- a/app/src/main/java/fr/free/nrw/commons/profile/ProfileActivity.java
+++ b/app/src/main/java/fr/free/nrw/commons/profile/ProfileActivity.java
@@ -13,6 +13,7 @@ import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
+import androidx.appcompat.widget.Toolbar;
import androidx.core.content.FileProvider;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
@@ -50,6 +51,9 @@ public class ProfileActivity extends BaseActivity {
@BindView(R.id.tab_layout)
public TabLayout tabLayout;
+ @BindView(R.id.toolbar)
+ Toolbar toolbar;
+
@Inject
SessionManager sessionManager;
@@ -83,9 +87,14 @@ public class ProfileActivity extends BaseActivity {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_profile);
ButterKnife.bind(this);
- setTitle(sessionManager.getUserName());
+
+ setSupportActionBar(toolbar);
+ toolbar.setNavigationOnClickListener(view -> {
+ onSupportNavigateUp();
+ });
userName = getIntent().getStringExtra(KEY_USERNAME);
+ setTitle(userName);
shouldShowContributions = getIntent().getBooleanExtra(KEY_SHOULD_SHOW_CONTRIBUTIONS, false);
supportFragmentManager = getSupportFragmentManager();
@@ -140,14 +149,13 @@ public class ProfileActivity extends BaseActivity {
fragmentList.add(leaderboardFragment);
titleList.add(getResources().getString(R.string.leaderboard_tab_title).toUpperCase());
- if (shouldShowContributions) {
- contributionsFragment = new ContributionsFragment();
- Bundle contributionsListBundle = new Bundle();
- contributionsListBundle.putString(KEY_USERNAME, userName);
- contributionsFragment.setArguments(contributionsListBundle);
- fragmentList.add(contributionsFragment);
- titleList.add(getString(R.string.contributions_fragment).toUpperCase());
- }
+ contributionsFragment = new ContributionsFragment();
+ Bundle contributionsListBundle = new Bundle();
+ contributionsListBundle.putString(KEY_USERNAME, userName);
+ contributionsFragment.setArguments(contributionsListBundle);
+ fragmentList.add(contributionsFragment);
+ titleList.add(getString(R.string.contributions_fragment).toUpperCase());
+
viewPagerAdapter.setTabData(fragmentList, titleList);
viewPagerAdapter.notifyDataSetChanged();
diff --git a/app/src/main/res/layout/activity_profile.xml b/app/src/main/res/layout/activity_profile.xml
index 114490f3f..b9366abaa 100644
--- a/app/src/main/res/layout/activity_profile.xml
+++ b/app/src/main/res/layout/activity_profile.xml
@@ -5,33 +5,44 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
-
+ android:layout_height="match_parent"
+ android:orientation="vertical">
-
+ android:layout_height="wrap_content" />
-
+
+
-
+ android:background="?attr/mainBackground">
-
-
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_contributions.xml b/app/src/main/res/layout/fragment_contributions.xml
index ba8d78de7..1390e8c28 100644
--- a/app/src/main/res/layout/fragment_contributions.xml
+++ b/app/src/main/res/layout/fragment_contributions.xml
@@ -48,13 +48,21 @@
android:text="@string/limited_connection_explanation"/>
+
+
+ android:background="#000">
+
+
\ No newline at end of file
diff --git a/app/src/test/kotlin/fr/free/nrw/commons/media/MediaDetailPagerFragmentUnitTests.kt b/app/src/test/kotlin/fr/free/nrw/commons/media/MediaDetailPagerFragmentUnitTests.kt
index 8e081a958..4782c49e5 100644
--- a/app/src/test/kotlin/fr/free/nrw/commons/media/MediaDetailPagerFragmentUnitTests.kt
+++ b/app/src/test/kotlin/fr/free/nrw/commons/media/MediaDetailPagerFragmentUnitTests.kt
@@ -67,7 +67,7 @@ class MediaDetailPagerFragmentUnitTests {
val activity = Robolectric.buildActivity(SearchActivity::class.java).create().get()
- fragment = MediaDetailPagerFragment()
+ fragment = MediaDetailPagerFragment(false, true)
fragment = MediaDetailPagerFragment(false, false)
fragment = MediaDetailPagerFragment(false, false, 0)
fragmentManager = activity.supportFragmentManager
diff --git a/app/src/test/kotlin/fr/free/nrw/commons/profile/ProfileActivityTest.kt b/app/src/test/kotlin/fr/free/nrw/commons/profile/ProfileActivityTest.kt
index 7aac45ae2..b1fb76516 100644
--- a/app/src/test/kotlin/fr/free/nrw/commons/profile/ProfileActivityTest.kt
+++ b/app/src/test/kotlin/fr/free/nrw/commons/profile/ProfileActivityTest.kt
@@ -5,6 +5,7 @@ import android.graphics.Bitmap
import android.os.Looper
import android.view.Menu
import android.view.MenuItem
+import androidx.appcompat.widget.Toolbar
import androidx.test.core.app.ApplicationProvider
import fr.free.nrw.commons.R
import fr.free.nrw.commons.TestCommonsApplication
@@ -106,4 +107,17 @@ class ProfileActivityTest {
fun testOnSupportNavigateUp() {
activity.onSupportNavigateUp()
}
+ @Test
+ fun testToolbarNotNull() {
+ val toolbar = activity.findViewById(R.id.toolbar)
+ Assert.assertNotNull(toolbar)
+ }
+
+ @Test
+ fun testOptionsMenu() {
+ val menu: Menu = RoboMenu(mockContext)
+ activity.onCreateOptionsMenu(menu)
+ Assert.assertEquals(1, menu.size())
+ }
+
}
\ No newline at end of file