From 5d32e8f1a75114dcfdf47df7afb16db546bffd32 Mon Sep 17 00:00:00 2001 From: Braden Farmer Date: Sun, 22 Jan 2017 15:14:29 -0700 Subject: [PATCH] Remove unnecessary fragment creation on configuration change --- .../java/com/farmerbb/taskbar/MainActivity.java | 33 ------------ .../farmerbb/taskbar/fragment/AboutFragment.java | 58 +++++++++++----------- .../taskbar/fragment/AdvancedFragment.java | 22 ++++---- .../taskbar/fragment/AppearanceFragment.java | 38 +++++++------- .../taskbar/fragment/FreeformModeFragment.java | 34 +++++++------ .../farmerbb/taskbar/fragment/GeneralFragment.java | 30 +++++------ .../taskbar/fragment/RecentAppsFragment.java | 26 +++++----- 7 files changed, 110 insertions(+), 131 deletions(-) diff --git a/app/src/main/java/com/farmerbb/taskbar/MainActivity.java b/app/src/main/java/com/farmerbb/taskbar/MainActivity.java index a0e9167b..a82953db 100644 --- a/app/src/main/java/com/farmerbb/taskbar/MainActivity.java +++ b/app/src/main/java/com/farmerbb/taskbar/MainActivity.java @@ -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); diff --git a/app/src/main/java/com/farmerbb/taskbar/fragment/AboutFragment.java b/app/src/main/java/com/farmerbb/taskbar/fragment/AboutFragment.java index 333c4a1a..adfd6ab4 100644 --- a/app/src/main/java/com/farmerbb/taskbar/fragment/AboutFragment.java +++ b/app/src/main/java/com/farmerbb/taskbar/fragment/AboutFragment.java @@ -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(); diff --git a/app/src/main/java/com/farmerbb/taskbar/fragment/AdvancedFragment.java b/app/src/main/java/com/farmerbb/taskbar/fragment/AdvancedFragment.java index 5f85afed..e8517721 100644 --- a/app/src/main/java/com/farmerbb/taskbar/fragment/AdvancedFragment.java +++ b/app/src/main/java/com/farmerbb/taskbar/fragment/AdvancedFragment.java @@ -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; } diff --git a/app/src/main/java/com/farmerbb/taskbar/fragment/AppearanceFragment.java b/app/src/main/java/com/farmerbb/taskbar/fragment/AppearanceFragment.java index 87d73632..d5159f8c 100644 --- a/app/src/main/java/com/farmerbb/taskbar/fragment/AppearanceFragment.java +++ b/app/src/main/java/com/farmerbb/taskbar/fragment/AppearanceFragment.java @@ -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; } diff --git a/app/src/main/java/com/farmerbb/taskbar/fragment/FreeformModeFragment.java b/app/src/main/java/com/farmerbb/taskbar/fragment/FreeformModeFragment.java index db667f11..828bda7a 100644 --- a/app/src/main/java/com/farmerbb/taskbar/fragment/FreeformModeFragment.java +++ b/app/src/main/java/com/farmerbb/taskbar/fragment/FreeformModeFragment.java @@ -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); diff --git a/app/src/main/java/com/farmerbb/taskbar/fragment/GeneralFragment.java b/app/src/main/java/com/farmerbb/taskbar/fragment/GeneralFragment.java index fad01a15..36e43368 100644 --- a/app/src/main/java/com/farmerbb/taskbar/fragment/GeneralFragment.java +++ b/app/src/main/java/com/farmerbb/taskbar/fragment/GeneralFragment.java @@ -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); diff --git a/app/src/main/java/com/farmerbb/taskbar/fragment/RecentAppsFragment.java b/app/src/main/java/com/farmerbb/taskbar/fragment/RecentAppsFragment.java index cfb4ae4d..39b45f31 100644 --- a/app/src/main/java/com/farmerbb/taskbar/fragment/RecentAppsFragment.java +++ b/app/src/main/java/com/farmerbb/taskbar/fragment/RecentAppsFragment.java @@ -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; } -- 2.11.0