OSDN Git Service

Remove unnecessary fragment creation on configuration change
authorBraden Farmer <farmerbb@gmail.com>
Sun, 22 Jan 2017 22:14:29 +0000 (15:14 -0700)
committerBraden Farmer <farmerbb@gmail.com>
Sun, 22 Jan 2017 22:14:29 +0000 (15:14 -0700)
app/src/main/java/com/farmerbb/taskbar/MainActivity.java
app/src/main/java/com/farmerbb/taskbar/fragment/AboutFragment.java
app/src/main/java/com/farmerbb/taskbar/fragment/AdvancedFragment.java
app/src/main/java/com/farmerbb/taskbar/fragment/AppearanceFragment.java
app/src/main/java/com/farmerbb/taskbar/fragment/FreeformModeFragment.java
app/src/main/java/com/farmerbb/taskbar/fragment/GeneralFragment.java
app/src/main/java/com/farmerbb/taskbar/fragment/RecentAppsFragment.java

index a0e9167..a82953d 100644 (file)
@@ -49,11 +49,7 @@ import com.farmerbb.taskbar.activity.KeyboardShortcutActivity;
 import com.farmerbb.taskbar.activity.ShortcutActivity;
 import com.farmerbb.taskbar.activity.StartTaskbarActivity;
 import com.farmerbb.taskbar.fragment.AboutFragment;
-import com.farmerbb.taskbar.fragment.AdvancedFragment;
 import com.farmerbb.taskbar.fragment.AppearanceFragment;
-import com.farmerbb.taskbar.fragment.FreeformModeFragment;
-import com.farmerbb.taskbar.fragment.GeneralFragment;
-import com.farmerbb.taskbar.fragment.RecentAppsFragment;
 import com.farmerbb.taskbar.fragment.SettingsFragment;
 import com.farmerbb.taskbar.service.DashboardService;
 import com.farmerbb.taskbar.service.NotificationService;
@@ -215,28 +211,6 @@ public class MainActivity extends AppCompatActivity implements colorDialog.Color
                 getFragmentManager().beginTransaction().replace(R.id.fragmentContainer, new AboutFragment(), "AboutFragment").commit();
             else
                 getFragmentManager().beginTransaction().replace(R.id.fragmentContainer, new AppearanceFragment(), "AppearanceFragment").commit();
-        } else {
-            String fragmentName = savedInstanceState.getString("fragment_name");
-            if(fragmentName != null) switch(fragmentName) {
-                case "AboutFragment":
-                    getFragmentManager().beginTransaction().replace(R.id.fragmentContainer, new AboutFragment(), fragmentName).commit();
-                    break;
-                case "AdvancedFragment":
-                    getFragmentManager().beginTransaction().replace(R.id.fragmentContainer, new AdvancedFragment(), fragmentName).commit();
-                    break;
-                case "FreeformModeFragment":
-                    getFragmentManager().beginTransaction().replace(R.id.fragmentContainer, new FreeformModeFragment(), fragmentName).commit();
-                    break;
-                case "GeneralFragment":
-                    getFragmentManager().beginTransaction().replace(R.id.fragmentContainer, new GeneralFragment(), fragmentName).commit();
-                    break;
-                case "RecentAppsFragment":
-                    getFragmentManager().beginTransaction().replace(R.id.fragmentContainer, new RecentAppsFragment(), fragmentName).commit();
-                    break;
-                case "AppearanceFragment":
-                    getFragmentManager().beginTransaction().replace(R.id.fragmentContainer, new AppearanceFragment(), fragmentName).commit();
-                    break;
-            }
         }
 
         if(!BuildConfig.APPLICATION_ID.equals(BuildConfig.BASE_APPLICATION_ID) && freeVersionInstalled()) {
@@ -392,13 +366,6 @@ public class MainActivity extends AppCompatActivity implements colorDialog.Color
                     .commit();
     }
 
-    @Override
-    protected void onSaveInstanceState(Bundle outState) {
-        outState.putString("fragment_name", getFragmentManager().findFragmentById(R.id.fragmentContainer).getTag());
-
-        super.onSaveInstanceState(outState);
-    }
-
     private boolean isSystemApp() {
         try {
             ApplicationInfo info = getPackageManager().getApplicationInfo(BuildConfig.APPLICATION_ID, 0);
index 333c4a1..adfd6ab 100644 (file)
@@ -46,36 +46,38 @@ public class AboutFragment extends SettingsFragment implements Preference.OnPref
 
         super.onActivityCreated(savedInstanceState);
 
-        // Add preferences
-        addPreferencesFromResource(R.xml.pref_base);
-
-        boolean playStoreInstalled = true;
-        try {
-            getActivity().getPackageManager().getPackageInfo("com.android.vending", 0);
-        } catch (PackageManager.NameNotFoundException e) {
-            playStoreInstalled = false;
+        if(savedInstanceState == null) {
+            // Add preferences
+            addPreferencesFromResource(R.xml.pref_base);
+
+            boolean playStoreInstalled = true;
+            try {
+                getActivity().getPackageManager().getPackageInfo("com.android.vending", 0);
+            } catch (PackageManager.NameNotFoundException e) {
+                playStoreInstalled = false;
+            }
+
+            SharedPreferences pref = U.getSharedPreferences(getActivity());
+            if(BuildConfig.APPLICATION_ID.equals(BuildConfig.BASE_APPLICATION_ID)
+                    && playStoreInstalled
+                    && !pref.getBoolean("hide_donate", false)) {
+                addPreferencesFromResource(R.xml.pref_about_donate);
+                findPreference("donate").setOnPreferenceClickListener(this);
+            } else
+                addPreferencesFromResource(R.xml.pref_about);
+
+            // Set OnClickListeners for certain preferences
+            if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
+                findPreference("pref_screen_freeform").setOnPreferenceClickListener(this);
+
+            findPreference("pref_screen_general").setOnPreferenceClickListener(this);
+            findPreference("pref_screen_appearance").setOnPreferenceClickListener(this);
+            findPreference("pref_screen_recent_apps").setOnPreferenceClickListener(this);
+            findPreference("pref_screen_advanced").setOnPreferenceClickListener(this);
+            findPreference("about").setOnPreferenceClickListener(this);
+            findPreference("about").setSummary(getString(R.string.pref_about_description, new String(Character.toChars(0x1F601))));
         }
 
-        SharedPreferences pref = U.getSharedPreferences(getActivity());
-        if(BuildConfig.APPLICATION_ID.equals(BuildConfig.BASE_APPLICATION_ID)
-                && playStoreInstalled
-                && !pref.getBoolean("hide_donate", false)) {
-            addPreferencesFromResource(R.xml.pref_about_donate);
-            findPreference("donate").setOnPreferenceClickListener(this);
-        } else
-            addPreferencesFromResource(R.xml.pref_about);
-
-        // Set OnClickListeners for certain preferences
-        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
-            findPreference("pref_screen_freeform").setOnPreferenceClickListener(this);
-
-        findPreference("pref_screen_general").setOnPreferenceClickListener(this);
-        findPreference("pref_screen_appearance").setOnPreferenceClickListener(this);
-        findPreference("pref_screen_recent_apps").setOnPreferenceClickListener(this);
-        findPreference("pref_screen_advanced").setOnPreferenceClickListener(this);
-        findPreference("about").setOnPreferenceClickListener(this);
-        findPreference("about").setSummary(getString(R.string.pref_about_description, new String(Character.toChars(0x1F601))));
-
         AppCompatActivity activity = (AppCompatActivity) getActivity();
         activity.setTitle(R.string.app_name);
         ActionBar actionBar = activity.getSupportActionBar();
index 5f85afe..e851772 100644 (file)
@@ -50,16 +50,20 @@ public class AdvancedFragment extends SettingsFragment implements Preference.OnP
 
         super.onActivityCreated(savedInstanceState);
 
-        // Add preferences
-        addPreferencesFromResource(R.xml.pref_advanced);
+        if(savedInstanceState == null) {
+            // Add preferences
+            addPreferencesFromResource(R.xml.pref_advanced);
 
-        // Set OnClickListeners for certain preferences
-        findPreference("clear_pinned_apps").setOnPreferenceClickListener(this);
-        findPreference("launcher").setOnPreferenceClickListener(this);
-        findPreference("keyboard_shortcut").setOnPreferenceClickListener(this);
-        findPreference("dashboard_grid_size").setOnPreferenceClickListener(this);
+            // Set OnClickListeners for certain preferences
+            findPreference("clear_pinned_apps").setOnPreferenceClickListener(this);
+            findPreference("launcher").setOnPreferenceClickListener(this);
+            findPreference("keyboard_shortcut").setOnPreferenceClickListener(this);
+            findPreference("dashboard_grid_size").setOnPreferenceClickListener(this);
 
-        bindPreferenceSummaryToValue(findPreference("dashboard"));
+            bindPreferenceSummaryToValue(findPreference("dashboard"));
+
+            updateDashboardGridSize(false);
+        }
 
         AppCompatActivity activity = (AppCompatActivity) getActivity();
         activity.setTitle(R.string.pref_header_advanced);
@@ -67,8 +71,6 @@ public class AdvancedFragment extends SettingsFragment implements Preference.OnP
         if(actionBar != null)
             actionBar.setDisplayHomeAsUpEnabled(true);
 
-        updateDashboardGridSize(false);
-
         finishedLoadingPrefs = true;
     }
 
index 87d7363..d5159f8 100644 (file)
@@ -40,21 +40,26 @@ public class AppearanceFragment extends SettingsFragment implements Preference.O
 
         super.onActivityCreated(savedInstanceState);
 
-        // Add preferences
-        addPreferencesFromResource(R.xml.pref_appearance);
-
-        // Set OnClickListeners for certain preferences
-        findPreference("icon_pack_list").setOnPreferenceClickListener(this);
-        findPreference("reset_colors").setOnPreferenceClickListener(this);
-        findPreference("background_tint_pref").setOnPreferenceClickListener(this);
-        findPreference("accent_color_pref").setOnPreferenceClickListener(this);
-
-        bindPreferenceSummaryToValue(findPreference("theme"));
-        bindPreferenceSummaryToValue(findPreference("invisible_button"));
-        bindPreferenceSummaryToValue(findPreference("app_drawer_icon"));
-        bindPreferenceSummaryToValue(findPreference("icon_pack_use_mask"));
-        bindPreferenceSummaryToValue(findPreference("visual_feedback"));
-        bindPreferenceSummaryToValue(findPreference("shortcut_icon"));
+        if(savedInstanceState == null) {
+            // Add preferences
+            addPreferencesFromResource(R.xml.pref_appearance);
+
+            // Set OnClickListeners for certain preferences
+            findPreference("icon_pack_list").setOnPreferenceClickListener(this);
+            findPreference("reset_colors").setOnPreferenceClickListener(this);
+            findPreference("background_tint_pref").setOnPreferenceClickListener(this);
+            findPreference("accent_color_pref").setOnPreferenceClickListener(this);
+
+            bindPreferenceSummaryToValue(findPreference("theme"));
+            bindPreferenceSummaryToValue(findPreference("invisible_button"));
+            bindPreferenceSummaryToValue(findPreference("app_drawer_icon"));
+            bindPreferenceSummaryToValue(findPreference("icon_pack_use_mask"));
+            bindPreferenceSummaryToValue(findPreference("visual_feedback"));
+            bindPreferenceSummaryToValue(findPreference("shortcut_icon"));
+
+            colorDialog.setColorPreferenceSummary(findPreference("background_tint_pref"), U.getBackgroundTint(getActivity()), getActivity(), getResources());
+            colorDialog.setColorPreferenceSummary(findPreference("accent_color_pref"), U.getAccentColor(getActivity()), getActivity(), getResources());
+        }
 
         AppCompatActivity activity = (AppCompatActivity) getActivity();
         activity.setTitle(R.string.pref_header_appearance);
@@ -62,9 +67,6 @@ public class AppearanceFragment extends SettingsFragment implements Preference.O
         if(actionBar != null)
             actionBar.setDisplayHomeAsUpEnabled(true);
 
-        colorDialog.setColorPreferenceSummary(findPreference("background_tint_pref"), U.getBackgroundTint(getActivity()), getActivity(), getResources());
-        colorDialog.setColorPreferenceSummary(findPreference("accent_color_pref"), U.getAccentColor(getActivity()), getActivity(), getResources());
-
         finishedLoadingPrefs = true;
     }
 
index db667f1..828bda7 100644 (file)
@@ -42,22 +42,24 @@ public class FreeformModeFragment extends SettingsFragment implements Preference
 
         super.onActivityCreated(savedInstanceState);
 
-        // Add preferences
-        addPreferencesFromResource(R.xml.pref_freeform_hack);
-
-        findPreference("freeform_hack").setOnPreferenceClickListener(this);
-        findPreference("freeform_mode_help").setOnPreferenceClickListener(this);
-        findPreference("add_shortcut").setOnPreferenceClickListener(this);
-
-        bindPreferenceSummaryToValue(findPreference("window_size"));
-
-        SharedPreferences pref = U.getSharedPreferences(getActivity());
-        boolean freeformHackEnabled = pref.getBoolean("freeform_hack", false);
-        findPreference("open_in_fullscreen").setEnabled(freeformHackEnabled);
-        findPreference("save_window_sizes").setEnabled(freeformHackEnabled);
-        findPreference("window_size").setEnabled(freeformHackEnabled);
-        findPreference("add_shortcut").setEnabled(freeformHackEnabled);
-        findPreference("force_new_window").setEnabled(freeformHackEnabled);
+        if(savedInstanceState == null) {
+            // Add preferences
+            addPreferencesFromResource(R.xml.pref_freeform_hack);
+
+            findPreference("freeform_hack").setOnPreferenceClickListener(this);
+            findPreference("freeform_mode_help").setOnPreferenceClickListener(this);
+            findPreference("add_shortcut").setOnPreferenceClickListener(this);
+
+            bindPreferenceSummaryToValue(findPreference("window_size"));
+
+            SharedPreferences pref = U.getSharedPreferences(getActivity());
+            boolean freeformHackEnabled = pref.getBoolean("freeform_hack", false);
+            findPreference("open_in_fullscreen").setEnabled(freeformHackEnabled);
+            findPreference("save_window_sizes").setEnabled(freeformHackEnabled);
+            findPreference("window_size").setEnabled(freeformHackEnabled);
+            findPreference("add_shortcut").setEnabled(freeformHackEnabled);
+            findPreference("force_new_window").setEnabled(freeformHackEnabled);
+        }
 
         AppCompatActivity activity = (AppCompatActivity) getActivity();
         activity.setTitle(R.string.pref_header_freeform);
index fad01a1..36e4336 100644 (file)
@@ -39,20 +39,22 @@ public class GeneralFragment extends SettingsFragment implements Preference.OnPr
 
         super.onActivityCreated(savedInstanceState);
 
-        // Add preferences
-        addPreferencesFromResource(R.xml.pref_general);
-
-        // Set OnClickListeners for certain preferences
-        findPreference("blacklist").setOnPreferenceClickListener(this);
-        findPreference("notification_settings").setOnPreferenceClickListener(this);
-
-        bindPreferenceSummaryToValue(findPreference("start_menu_layout"));
-        bindPreferenceSummaryToValue(findPreference("scrollbar"));
-        bindPreferenceSummaryToValue(findPreference("position"));
-        bindPreferenceSummaryToValue(findPreference("anchor"));
-        bindPreferenceSummaryToValue(findPreference("alt_button_config"));
-        bindPreferenceSummaryToValue(findPreference("show_search_bar"));
-        bindPreferenceSummaryToValue(findPreference("hide_when_keyboard_shown"));
+        if(savedInstanceState == null) {
+            // Add preferences
+            addPreferencesFromResource(R.xml.pref_general);
+
+            // Set OnClickListeners for certain preferences
+            findPreference("blacklist").setOnPreferenceClickListener(this);
+            findPreference("notification_settings").setOnPreferenceClickListener(this);
+
+            bindPreferenceSummaryToValue(findPreference("start_menu_layout"));
+            bindPreferenceSummaryToValue(findPreference("scrollbar"));
+            bindPreferenceSummaryToValue(findPreference("position"));
+            bindPreferenceSummaryToValue(findPreference("anchor"));
+            bindPreferenceSummaryToValue(findPreference("alt_button_config"));
+            bindPreferenceSummaryToValue(findPreference("show_search_bar"));
+            bindPreferenceSummaryToValue(findPreference("hide_when_keyboard_shown"));
+        }
 
         AppCompatActivity activity = (AppCompatActivity) getActivity();
         activity.setTitle(R.string.pref_header_general);
index cfb4ae4..39b45f3 100644 (file)
@@ -41,17 +41,22 @@ public class RecentAppsFragment extends SettingsFragment implements Preference.O
 
         super.onActivityCreated(savedInstanceState);
 
-        // Add preferences
-        addPreferencesFromResource(R.xml.pref_recent_apps);
+        if(savedInstanceState == null) {
+            // Add preferences
+            addPreferencesFromResource(R.xml.pref_recent_apps);
 
-        // Set OnClickListeners for certain preferences
-        findPreference("enable_recents").setOnPreferenceClickListener(this);
-        findPreference("max_num_of_recents").setOnPreferenceClickListener(this);
-        findPreference("refresh_frequency").setOnPreferenceClickListener(this);
+            // Set OnClickListeners for certain preferences
+            findPreference("enable_recents").setOnPreferenceClickListener(this);
+            findPreference("max_num_of_recents").setOnPreferenceClickListener(this);
+            findPreference("refresh_frequency").setOnPreferenceClickListener(this);
 
-        bindPreferenceSummaryToValue(findPreference("recents_amount"));
-        bindPreferenceSummaryToValue(findPreference("sort_order"));
-        bindPreferenceSummaryToValue(findPreference("disable_scrolling_list"));
+            bindPreferenceSummaryToValue(findPreference("recents_amount"));
+            bindPreferenceSummaryToValue(findPreference("sort_order"));
+            bindPreferenceSummaryToValue(findPreference("disable_scrolling_list"));
+
+            updateMaxNumOfRecents(false);
+            updateRefreshFrequency(false);
+        }
 
         AppCompatActivity activity = (AppCompatActivity) getActivity();
         activity.setTitle(R.string.pref_header_recent_apps);
@@ -59,9 +64,6 @@ public class RecentAppsFragment extends SettingsFragment implements Preference.O
         if(actionBar != null)
             actionBar.setDisplayHomeAsUpEnabled(true);
 
-        updateMaxNumOfRecents(false);
-        updateRefreshFrequency(false);
-
         finishedLoadingPrefs = true;
     }