package com.rava.voting.ui; import java.util.List; import android.app.ActionBar; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.os.Bundle; import android.preference.EditTextPreference; import android.preference.PreferenceActivity; import android.preference.PreferenceFragment; import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.rava.voting.R; import com.rava.voting.RavaApplication; import com.rava.voting.utils.SystemInfo; public class PreferencesActivity extends PreferenceActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setTitle(R.string.action_settings); ActionBar actionBar = getActionBar(); actionBar.setHomeButtonEnabled(true); actionBar.setDisplayHomeAsUpEnabled(true); } @Override public void onBuildHeaders(List<Header> target) { loadHeadersFromResource(R.xml.preference_headers, target); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: Intent intent = new Intent(this, MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); return true; default: return super.onOptionsItemSelected(item); } } // Overrided function. It is required for Android version 4.4(19) and higher protected boolean isValidFragment(String fragmentName) { if (PrefsConnectionFragment.class.getName().equals(fragmentName)) return true; if (PrefsAboutFragment.class.getName().equals(fragmentName)) return true; return false; } /** * This fragment shows the preferences for the connection header. */ public static class PrefsConnectionFragment extends PreferenceFragment implements OnSharedPreferenceChangeListener { public static final String KEY_EDITTEXT_SERVER_NAME = "pref_edittext_server_name"; public static final String KEY_EDITTEXT_SERVER_PORT = "pref_edittext_server_port"; private EditTextPreference mEditTextPreferenceServerName; private EditTextPreference mEditTextPreferenceServerPort; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Load the preferences from an XML resource addPreferencesFromResource(R.xml.preferences_connection); // Get a reference to the preferences mEditTextPreferenceServerName = (EditTextPreference) findPreference(KEY_EDITTEXT_SERVER_NAME); mEditTextPreferenceServerPort = (EditTextPreference) findPreference(KEY_EDITTEXT_SERVER_PORT); } @Override public void onResume() { super.onResume(); // Set up a listener whenever a key changes getPreferenceScreen().getSharedPreferences() .registerOnSharedPreferenceChangeListener(this); updatePreference(KEY_EDITTEXT_SERVER_NAME); updatePreference(KEY_EDITTEXT_SERVER_PORT); } @Override public void onPause() { super.onPause(); // Unregister the listener whenever a key changes getPreferenceScreen().getSharedPreferences() .unregisterOnSharedPreferenceChangeListener(this); } @Override public void onSharedPreferenceChanged( SharedPreferences sharedPreferences, String key) { updatePreference(key); RavaApplication app = (RavaApplication) getActivity() .getApplication(); app.initRestAdapter(); } private void updatePreference(String key) { String value = ""; if (key.equals(KEY_EDITTEXT_SERVER_NAME)) { value = mEditTextPreferenceServerName.getText(); if (value != null && value.trim().length() > 0) { mEditTextPreferenceServerName.setSummary(value); } else { mEditTextPreferenceServerName .setSummary(R.string.please_input_server_name); } } else if (key.equals(KEY_EDITTEXT_SERVER_PORT)) { value = mEditTextPreferenceServerPort.getText(); if (value != null && value.trim().length() > 0) { mEditTextPreferenceServerPort.setSummary(value); } else { mEditTextPreferenceServerPort .setSummary(R.string.please_input_server_port); } } } } /** * This fragment shows the preferences for the about header. */ public static class PrefsAboutFragment extends PreferenceFragment implements OnSharedPreferenceChangeListener { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_about_page, container, false); return view; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); Context context = getActivity(); TextView textViewVersion = (TextView) getView().findViewById( R.id.textview_program_version); String version = SystemInfo.getAppVersion(getActivity()); textViewVersion.setText(String.format(context.getResources() .getString(R.string.program_version), version)); } @Override public void onResume() { super.onResume(); } @Override public void onPause() { super.onPause(); } @Override public void onSharedPreferenceChanged( SharedPreferences sharedPreferences, String key) { updatePreference(key); } private void updatePreference(String key) { } } }