mirror of
				https://github.com/nerzhul/nrz-androidlib.git
				synced 2025-10-31 09:27:13 +00:00 
			
		
		
		
	Add many methods to make preference activity simpler
This commit is contained in:
		
							parent
							
								
									d9f5dd4f5a
								
							
						
					
					
						commit
						f4497ce993
					
				| @ -28,26 +28,31 @@ package fr.nrz.androidlib.activities; | ||||
|  * either expressed or implied, of the FreeBSD Project. | ||||
|  */ | ||||
| 
 | ||||
| import java.util.Vector; | ||||
| 
 | ||||
| import android.annotation.TargetApi; | ||||
| import android.content.Context; | ||||
| import android.content.res.Configuration; | ||||
| import android.os.Build; | ||||
| import android.os.Bundle; | ||||
| import android.preference.CheckBoxPreference; | ||||
| import android.preference.ListPreference; | ||||
| import android.preference.Preference; | ||||
| import android.preference.PreferenceActivity; | ||||
| import android.preference.PreferenceFragment; | ||||
| import android.preference.PreferenceManager; | ||||
| 
 | ||||
| public abstract class NrzSettingsActivity extends PreferenceActivity { | ||||
| public class NrzSettingsActivity extends PreferenceActivity { | ||||
| 	private static final boolean ALWAYS_SIMPLE_PREFS = false; | ||||
| 	protected static Context _context; | ||||
| 	protected static int _prefsRessourceFile; | ||||
| 	protected static Preference.OnPreferenceChangeListener sBindPreferenceListener; | ||||
| 	protected static Vector<BindObjectPref> _boolPrefs = new Vector<BindObjectPref>(); | ||||
| 	protected static Vector<BindObjectPref> _stringPrefs = new Vector<BindObjectPref>(); | ||||
| 
 | ||||
| 	@Override | ||||
| 	protected void onPostCreate(final Bundle savedInstanceState) { | ||||
| 		super.onPostCreate(savedInstanceState); | ||||
| 		_context = getBaseContext(); | ||||
| 
 | ||||
| 		setupSimplePreferencesScreen(); | ||||
| 	} | ||||
| 
 | ||||
| @ -68,8 +73,6 @@ public abstract class NrzSettingsActivity extends PreferenceActivity { | ||||
| 		bindPreferences(); | ||||
| 	} | ||||
| 
 | ||||
| 	protected abstract void bindPreferences(); | ||||
| 
 | ||||
| 	/** {@inheritDoc} */ | ||||
| 	@Override | ||||
| 	public boolean onIsMultiPane() { | ||||
| @ -109,11 +112,11 @@ public abstract class NrzSettingsActivity extends PreferenceActivity { | ||||
| 	public static void bindPreferenceBooleanToValue(final Preference preference, final Boolean defValue) { | ||||
| 		// Set the listener to watch for value changes. | ||||
| 		preference | ||||
| 		.setOnPreferenceChangeListener(sBindPreferenceListener); | ||||
| 		.setOnPreferenceChangeListener(_bindPreferenceListener); | ||||
| 
 | ||||
| 		// Trigger the listener immediately with the preference's | ||||
| 		// current value. | ||||
| 		sBindPreferenceListener.onPreferenceChange( | ||||
| 		_bindPreferenceListener.onPreferenceChange( | ||||
| 				preference, | ||||
| 				PreferenceManager.getDefaultSharedPreferences( | ||||
| 						preference.getContext()).getBoolean( | ||||
| @ -123,20 +126,96 @@ public abstract class NrzSettingsActivity extends PreferenceActivity { | ||||
| 				); | ||||
| 	} | ||||
| 
 | ||||
| 	public static void bindPreferenceStringToValue(final Preference preference) { | ||||
| 	public static void bindPreferenceStringToValue(final Preference preference, final String defValue) { | ||||
| 		// Set the listener to watch for value changes. | ||||
| 		preference | ||||
| 		.setOnPreferenceChangeListener(sBindPreferenceListener); | ||||
| 		.setOnPreferenceChangeListener(_bindPreferenceListener); | ||||
| 
 | ||||
| 		// Trigger the listener immediately with the preference's | ||||
| 		// current value. | ||||
| 		sBindPreferenceListener.onPreferenceChange( | ||||
| 		_bindPreferenceListener.onPreferenceChange( | ||||
| 				preference, | ||||
| 				PreferenceManager.getDefaultSharedPreferences( | ||||
| 						preference.getContext()).getString( | ||||
| 								preference.getKey(), | ||||
| 								"" | ||||
| 								defValue | ||||
| 								) | ||||
| 				); | ||||
| 	} | ||||
| 
 | ||||
| 	/** | ||||
| 	 * This fragment shows data and sync preferences only. It is used when the | ||||
| 	 * activity is showing a two-pane settings UI. | ||||
| 	 */ | ||||
| 	@TargetApi(Build.VERSION_CODES.HONEYCOMB) | ||||
| 	public static class DataSyncPreferenceFragment extends PreferenceFragment { | ||||
| 		@Override | ||||
| 		public void onCreate(final Bundle savedInstanceState) { | ||||
| 			super.onCreate(savedInstanceState); | ||||
| 			addPreferencesFromResource(_prefsRessourceFile); | ||||
| 
 | ||||
| 			// Bind the summaries of EditText/List/Dialog/Ringtone preferences | ||||
| 			// to their values. When their values change, their summaries are | ||||
| 			// updated to reflect the new value, per the Android Design | ||||
| 			// guidelines. | ||||
| 			for (int i=0; i < _stringPrefs.size(); i++) { | ||||
| 				bindPreferenceStringToValue(findPreference(_stringPrefs.get(i).name), | ||||
| 						(String) _stringPrefs.get(i).value); | ||||
| 			} | ||||
| 			for (int i=0; i < _boolPrefs.size(); i++) { | ||||
| 				bindPreferenceBooleanToValue(findPreference(_boolPrefs.get(i).name), | ||||
| 						(Boolean) _boolPrefs.get(i).value); | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	private void bindPreferences() { | ||||
| 		// Bind the summaries of EditText/List/Dialog/Ringtone preferences to | ||||
| 		// their values. When their values change, their summaries are updated | ||||
| 		// to reflect the new value, per the Android Design guidelines. | ||||
| 		for (int i=0; i < _stringPrefs.size(); i++) { | ||||
| 			bindPreferenceStringToValue(findPreference(_stringPrefs.get(i).name), | ||||
| 					(String) _stringPrefs.get(i).value); | ||||
| 		} | ||||
| 
 | ||||
| 		for (int i=0; i < _boolPrefs.size(); i++) { | ||||
| 			bindPreferenceBooleanToValue(findPreference(_boolPrefs.get(i).name), | ||||
| 					(Boolean) _boolPrefs.get(i).value); | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	// The preference object, it's only a key value pair | ||||
| 	protected class BindObjectPref { | ||||
| 		public String name; | ||||
| 		public Object value; | ||||
| 		public BindObjectPref(final String prefName, final Object prefVal) { | ||||
| 			name = prefName; | ||||
| 			value = prefVal; | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	/** | ||||
| 	 * A preference value change listener that updates the preference's summary | ||||
| 	 * to reflect its new value. | ||||
| 	 */ | ||||
| 	private static Preference.OnPreferenceChangeListener _bindPreferenceListener = new Preference.OnPreferenceChangeListener() { | ||||
| 		@Override | ||||
| 		public boolean onPreferenceChange(final Preference preference, final Object value) { | ||||
| 			if (preference instanceof ListPreference) { | ||||
| 				handleListPreference(preference.getKey(), value.toString(), (ListPreference) preference); | ||||
| 
 | ||||
| 			} else if (preference instanceof CheckBoxPreference) { | ||||
| 				handleCheckboxPreference(preference.getKey(), (Boolean)value); | ||||
| 			} else { | ||||
| 				// For all other preferences, set the summary to the value's | ||||
| 				// simple string representation. | ||||
| 				//preference.setSummary(boolValue); | ||||
| 			} | ||||
| 			return true; | ||||
| 		} | ||||
| 	}; | ||||
| 
 | ||||
| 	protected static void handleCheckboxPreference(final String key, final Boolean value) {} | ||||
| 	protected static void handleListPreference(final String key, final String value, | ||||
| 			final ListPreference preference) {} | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user