package de.tum.in.tumcampusapp.activities; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; import android.support.v7.preference.PreferenceFragmentCompat; import android.support.v7.preference.PreferenceScreen; import de.tum.in.tumcampusapp.R; import de.tum.in.tumcampusapp.activities.generic.BaseActivity; import de.tum.in.tumcampusapp.auxiliary.Const; import de.tum.in.tumcampusapp.auxiliary.ImplicitCounter; import de.tum.in.tumcampusapp.fragments.SettingsFragment; /** * Provides the preferences, encapsulated into an own activity. */ public class UserPreferencesActivity extends BaseActivity implements PreferenceFragmentCompat.OnPreferenceStartScreenCallback{ public UserPreferencesActivity() { super(R.layout.activity_user_preferences); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ImplicitCounter.count(this); //Enable the direct access of a specific sub section, e.g.: cards Intent intent = getIntent(); Bundle args = new Bundle(); if (intent != null && intent.getExtras() != null) { args.putString(PreferenceFragmentCompat.ARG_PREFERENCE_ROOT, intent.getExtras().getString(Const.PREFERENCE_SCREEN)); } if (savedInstanceState == null) { // Create the fragment only when the activity is created for the first time. ie. not after orientation changes Fragment fragment = getSupportFragmentManager().findFragmentByTag(SettingsFragment.FRAGMENT_TAG); if (fragment == null) { fragment = new SettingsFragment(); } fragment.setArguments(args); FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.replace(R.id.settings_frame, fragment, SettingsFragment.FRAGMENT_TAG); ft.commit(); } } @Override public boolean onPreferenceStartScreen(PreferenceFragmentCompat preferenceFragmentCompat, PreferenceScreen preferenceScreen) { FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); SettingsFragment fragment = new SettingsFragment(); Bundle args = new Bundle(); args.putString(PreferenceFragmentCompat.ARG_PREFERENCE_ROOT, preferenceScreen.getKey()); fragment.setArguments(args); ft.add(R.id.settings_frame, fragment, preferenceScreen.getKey()); ft.addToBackStack(preferenceScreen.getKey()); ft.commit(); return true; } }