]> gitweb.stoutner.com Git - PrivacyBrowserAndroid.git/blobdiff - app/src/main/java/com/stoutner/privacybrowser/fragments/AboutTabFragment.java
Save and restore the app state. https://redmine.stoutner.com/issues/461
[PrivacyBrowserAndroid.git] / app / src / main / java / com / stoutner / privacybrowser / fragments / AboutTabFragment.java
index 8f148a4bcf05890154d3ae6ec63a458ee8c430e8..c35b90b64b6231543d6aabc52afc116e6830054a 100644 (file)
@@ -54,9 +54,10 @@ import java.text.DateFormat;
 import java.util.Date;
 
 public class AboutTabFragment extends Fragment {
-    // Declare the class variables.
+    // Define the class variables.
     private int tabNumber;
     private String[] blocklistVersions;
+    private View tabLayout;
 
     public static AboutTabFragment createTab(int tabNumber, String[] blocklistVersions) {
         // Create a bundle.
@@ -94,9 +95,6 @@ public class AboutTabFragment extends Fragment {
 
     @Override
     public View onCreateView(@NonNull LayoutInflater layoutInflater, ViewGroup container, Bundle savedInstanceState) {
-        // Create a tab layout view.
-        View tabLayout;
-
         // Get a handle for the context and assert that it isn't null.
         Context context = getContext();
         assert context != null;
@@ -224,12 +222,12 @@ public class AboutTabFragment extends Fragment {
             SpannableStringBuilder ultraListStringBuilder = new SpannableStringBuilder(ultraListLabel + blocklistVersions[4]);
             SpannableStringBuilder ultraPrivacyStringBuilder = new SpannableStringBuilder(ultraPrivacyLabel + blocklistVersions[5]);
 
-            // Create the `blueColorSpan` variable.
+            // Define the blue color span variable.
             ForegroundColorSpan blueColorSpan;
 
             // Set the blue color span according to the theme.  The deprecated `getResources()` must be used until the minimum API >= 23.
             if (currentThemeStatus == Configuration.UI_MODE_NIGHT_YES) {
-                blueColorSpan = new ForegroundColorSpan(getResources().getColor(R.color.blue_400));
+                blueColorSpan = new ForegroundColorSpan(getResources().getColor(R.color.violet_500));
             } else {
                 blueColorSpan = new ForegroundColorSpan(getResources().getColor(R.color.blue_700));
             }
@@ -470,7 +468,27 @@ public class AboutTabFragment extends Fragment {
             }
         }
 
+        // Scroll the tab if the saved instance state is not null.
+        if (savedInstanceState != null) {
+            tabLayout.post(() -> {
+                tabLayout.setScrollX(savedInstanceState.getInt("scroll_x"));
+                tabLayout.setScrollY(savedInstanceState.getInt("scroll_y"));
+            });
+        }
+
         // Return the formatted `tabLayout`.
         return tabLayout;
     }
+
+    @Override
+    public void onSaveInstanceState(@NonNull Bundle savedInstanceState) {
+        // Run the default commands.
+        super.onSaveInstanceState(savedInstanceState);
+
+        // Save the scroll positions if the tab layout is not null, which can happen if a tab is not currently selected.
+        if (tabLayout != null) {
+            savedInstanceState.putInt("scroll_x", tabLayout.getScrollX());
+            savedInstanceState.putInt("scroll_y", tabLayout.getScrollY());
+        }
+    }
 }
\ No newline at end of file