Java tutorial
/* This file is part of Melee Handbook. Melee Handbook is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Melee Handbook is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Melee Handbook. If not, see <http://www.gnu.org/licenses/> */ package com.thatkawaiiguy.meleehandbook.activity; import android.content.ComponentName; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.PreferenceActivity; import android.support.annotation.LayoutRes; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.content.IntentCompat; import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatDelegate; import android.support.v7.widget.Toolbar; import android.view.MenuInflater; import android.view.MenuItem; import com.thatkawaiiguy.meleehandbook.MainActivity; import com.thatkawaiiguy.meleehandbook.R; import com.thatkawaiiguy.meleehandbook.other.Preferences; public class AppSettingsActivity extends PreferenceActivity { private SharedPreferences.OnSharedPreferenceChangeListener mListener; private AppCompatDelegate mDelegate; private boolean restart = false; @Override protected void onCreate(Bundle savedInstanceState) { if (getIntent().hasExtra("bundle") && savedInstanceState == null) savedInstanceState = getIntent().getExtras().getBundle("bundle"); Preferences.applySettingsTheme(this); getDelegate().installViewFactory(); getDelegate().onCreate(savedInstanceState); super.onCreate(savedInstanceState); setContentView(R.layout.activity_settings); setSupportActionBar((Toolbar) findViewById(R.id.toolbar)); getSupportActionBar().setTitle(R.string.action_settings); getSupportActionBar().setDisplayHomeAsUpEnabled(true); addPreferencesFromResource(R.xml.settings); Preferences.sync(getPreferenceManager()); mListener = new SharedPreferences.OnSharedPreferenceChangeListener() { @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { Preferences.sync(getPreferenceManager(), key); if (key.equals(getString(R.string.pref_theme))) { recreate(); restart = true; } else if (key.equals(getString(R.string.pref_ads))) restart = true; else if (key.equals(getString(R.string.pref_tier))) restart = true; else if (key.equals(getString(R.string.pref_uniquegroup))) restart = true; else if (key.equals(getString(R.string.pref_main))) restart = true; } }; } @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); getDelegate().onPostCreate(savedInstanceState); if (savedInstanceState != null) restart = savedInstanceState.getBoolean("restart"); } private void setSupportActionBar(@Nullable Toolbar toolbar) { getDelegate().setSupportActionBar(toolbar); } private ActionBar getSupportActionBar() { return getDelegate().getSupportActionBar(); } @NonNull @Override public MenuInflater getMenuInflater() { return getDelegate().getMenuInflater(); } @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home) { onBackPressed(); return true; } return super.onOptionsItemSelected(item); } @Override public void setContentView(@LayoutRes int layoutResID) { getDelegate().setContentView(layoutResID); } @Override public void onResume() { super.onResume(); getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(mListener); } @Override public void onBackPressed() { if (restart) { super.onBackPressed(); final Intent intent = IntentCompat .makeMainActivity(new ComponentName(AppSettingsActivity.this, MainActivity.class)); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | IntentCompat.FLAG_ACTIVITY_CLEAR_TASK); startActivity(intent); } else super.onBackPressed(); } @Override protected void onPostResume() { super.onPostResume(); getDelegate().onPostResume(); } @Override public void onPause() { getPreferenceManager().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(mListener); super.onPause(); } @Override protected void onStop() { super.onStop(); getDelegate().onStop(); } @Override protected void onDestroy() { super.onDestroy(); getDelegate().onDestroy(); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); if (outState != null) outState.putBoolean("restart", restart); } private AppCompatDelegate getDelegate() { if (mDelegate == null) mDelegate = AppCompatDelegate.create(this, null); return mDelegate; } }