diff options
author | ByteHamster <info@bytehamster.com> | 2018-04-22 20:48:00 +0200 |
---|---|---|
committer | ByteHamster <info@bytehamster.com> | 2018-04-22 20:48:00 +0200 |
commit | 8b72f3514740ff2f5a5b085355081a2751850756 (patch) | |
tree | 5f09964015f94622ef74cb78d2c8614b36eaec1a /app/src/main/java/de/danoeh/antennapod/activity/PreferenceActivity.java | |
parent | 8c6f40b0a272851110c9c073c75b9e6521e880d0 (diff) | |
parent | 94bf3cd7346343317b439641236264273e418365 (diff) | |
download | AntennaPod-8b72f3514740ff2f5a5b085355081a2751850756.zip |
Merge branch 'develop' into exo-player
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/activity/PreferenceActivity.java')
-rw-r--r-- | app/src/main/java/de/danoeh/antennapod/activity/PreferenceActivity.java | 63 |
1 files changed, 54 insertions, 9 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/PreferenceActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/PreferenceActivity.java index 12d918a76..83578ff5c 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/PreferenceActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/PreferenceActivity.java @@ -5,6 +5,7 @@ import android.content.Intent; import android.os.Bundle; import android.preference.Preference; import android.preference.PreferenceFragment; +import android.preference.PreferenceScreen; import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; import android.view.Menu; @@ -24,13 +25,25 @@ import de.danoeh.antennapod.preferences.PreferenceController; */ public class PreferenceActivity extends AppCompatActivity { + public static final String PARAM_RESOURCE = "resource"; private static WeakReference<PreferenceActivity> instance; private PreferenceController preferenceController; - private MainFragment prefFragment; private final PreferenceController.PreferenceUI preferenceUI = new PreferenceController.PreferenceUI() { + private PreferenceFragment fragment; + + @Override + public void setFragment(PreferenceFragment fragment) { + this.fragment = fragment; + } + @Override public Preference findPreference(CharSequence key) { - return prefFragment.findPreference(key); + return fragment.findPreference(key); + } + + @Override + public PreferenceScreen getPreferenceScreen() { + return fragment.getPreferenceScreen(); } @Override @@ -64,7 +77,11 @@ public class PreferenceActivity extends AppCompatActivity { // since the MainFragment depends on the preferenceController already being created preferenceController = new PreferenceController(preferenceUI); - prefFragment = new MainFragment(); + PreferenceFragment prefFragment = new MainFragment(); + preferenceUI.setFragment(prefFragment); + Bundle args = new Bundle(); + args.putInt(PARAM_RESOURCE, R.xml.preferences); + prefFragment.setArguments(args); getFragmentManager().beginTransaction().replace(R.id.content, prefFragment).commit(); } @@ -84,7 +101,11 @@ public class PreferenceActivity extends AppCompatActivity { public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: - finish(); + if (getFragmentManager().getBackStackEntryCount() == 0) { + finish(); + } else { + getFragmentManager().popBackStack(); + } return true; default: return false; @@ -97,10 +118,11 @@ public class PreferenceActivity extends AppCompatActivity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setRetainInstance(true); - addPreferencesFromResource(R.xml.preferences); + addPreferencesFromResource(getArguments().getInt(PARAM_RESOURCE)); PreferenceActivity activity = instance.get(); - if(activity != null && activity.preferenceController != null) { - activity.preferenceController.onCreate(); + if (activity != null && activity.preferenceController != null) { + activity.preferenceUI.setFragment(this); + activity.preferenceController.onCreate(getArguments().getInt(PARAM_RESOURCE)); } } @@ -109,7 +131,28 @@ public class PreferenceActivity extends AppCompatActivity { super.onResume(); PreferenceActivity activity = instance.get(); if(activity != null && activity.preferenceController != null) { - activity.preferenceController.onResume(); + activity.setTitle(getTitle(getArguments().getInt(PARAM_RESOURCE))); + activity.preferenceUI.setFragment(this); + activity.preferenceController.onResume(getArguments().getInt(PARAM_RESOURCE)); + } + } + + private int getTitle(int preferences) { + switch (preferences) { + case R.xml.preferences_network: + return R.string.network_pref; + case R.xml.preferences_autodownload: + return R.string.pref_automatic_download_title; + case R.xml.preferences_playback: + return R.string.playback_pref; + case R.xml.preferences_storage: + return R.string.storage_pref; + case R.xml.preferences_user_interface: + return R.string.user_interface_label; + case R.xml.preferences_integrations: + return R.string.integrations_label; + default: + return R.string.settings_label; } } @@ -117,7 +160,8 @@ public class PreferenceActivity extends AppCompatActivity { public void onPause() { PreferenceActivity activity = instance.get(); if(activity != null && activity.preferenceController != null) { - activity.preferenceController.onPause(); + activity.preferenceUI.setFragment(this); + activity.preferenceController.onPause(getArguments().getInt(PARAM_RESOURCE)); } super.onPause(); } @@ -126,6 +170,7 @@ public class PreferenceActivity extends AppCompatActivity { public void onStop() { PreferenceActivity activity = instance.get(); if(activity != null && activity.preferenceController != null) { + activity.preferenceUI.setFragment(this); activity.preferenceController.onStop(); } super.onStop(); |