Thanks for helpful comment, Jason. I got an answer for this. I pasted
for those who want to do similar.
-----
protected void onCreate(Bundle savedInstanceState) {
....
createPreferenceHierarchy();
setPreferenceScreen(mRoot);
}
private void createPreferenceHierarchy()
{
// Root
mRoot = getPreferenceManager().createPreferenceScreen(this);
// Orientation tracking smoothing method preference
mOrientationSmoothingPref = getPreferenceManager
().createPreferenceScreen(this);
mOrientationSmoothingPref.setKey( (String) getResources().getText
(R.string.key_screen_orientation_smoothing_method) );
mOrientationSmoothingPref.setTitle
(R.string.title_screen_orientation_smoothing_method);
mOrientationSmoothingPref.setSummary
(R.string.summary_screen_orientation_smoothing_method);
mRoot.addPreference(mOrientationSmoothingPref);
// List preference
mOrientationSmoothinglistPref = new ListPreference(this);
mOrientationSmoothinglistPref.setEntries
(R.array.entries_orientation_smoothing_method_preference);
mOrientationSmoothinglistPref.setEntryValues
(R.array.entryvalues_orientation_smoothing_method_preference);
mOrientationSmoothinglistPref.setKey( (String) getResources
().getText(R.string.key_preference_orientation_smoothing_method) );
mOrientationSmoothinglistPref.setTitle
(R.string.title_preference_orientation_smoothing_method);
mOrientationSmoothinglistPref.setDialogTitle
(R.string.title_preference_orientation_smoothing_method);
mOrientationSmoothinglistPref.setDefaultValue("No");
mOrientationSmoothingPref.addPreference
(mOrientationSmoothinglistPref);
// Create parameter preference category
createOrientationSmoothingParameterPreferenceCategory();
}
private void createOrientationSmoothingParameterPreferenceCategory()
{
mOriantationSmoothingParameterPrefCat = new PreferenceCategory(this);
if ( mOrientationSmoothinglistPref.getValue().equals("ma") )
{
// Set summary to list pref
mOrientationSmoothinglistPref.setSummary("Moving Averaging");
// Moving averaging parameters category
mOriantationSmoothingParameterPrefCat.setTitle
(R.string.title_category_orientation_ma_parameter);
mOrientationSmoothingPref.addPreference
(mOriantationSmoothingParameterPrefCat);
// Edit text preference
mMaNPref = new EditTextPreference(this);
mMaNPref.setKey( (String) getResources().getText
(R.string.key_preference_ma_n) );
mMaNPref.setDialogTitle(R.string.title_preference_ma_n);
mMaNPref.setTitle(R.string.title_preference_ma_n);
mMaNPref.setSummary(R.string.summary_preference_ma_n);
mMaNPref.setDefaultValue("10");
mOriantationSmoothingParameterPrefCat.addPreference(mMaNPref);
}
else if ( mOrientationSmoothinglistPref.getValue().equals("ses") )
{
// Set summary to list pref
mOrientationSmoothinglistPref.setSummary("Single exponential
smoothing");
// Single exponential smoothing parameters category
mOriantationSmoothingParameterPrefCat.setTitle
(R.string.title_category_orientation_ses_parameter);
mOrientationSmoothingPref.addPreference
(mOriantationSmoothingParameterPrefCat);
// Edit text preference
mSesalphaPref = new EditTextPreference(this);
mSesalphaPref.setKey( (String) getResources().getText
(R.string.key_preference_ses_alpha) );
mSesalphaPref.setTitle(R.string.title_preference_ses_alpha);
mSesalphaPref.setDialogTitle
(R.string.title_preference_ses_alpha);
mSesalphaPref.setSummary
(R.string.summary_preference_ses_alpha);
mSesalphaPref.setDefaultValue("0.3");
mOriantationSmoothingParameterPrefCat.addPreference
(mSesalphaPref);
}
else if ( mOrientationSmoothinglistPref.getValue().equals("des") )
{
// Set summary to list pref
mOrientationSmoothinglistPref.setSummary("Double exponential
smoothing");
// Double exponential smoothing parameters category
mOriantationSmoothingParameterPrefCat.setTitle
(R.string.title_category_orientation_des_parameter);
mOrientationSmoothingPref.addPreference
(mOriantationSmoothingParameterPrefCat);
// Edit text preference
mDesalphaPref = new EditTextPreference(this);
mDesalphaPref.setKey( (String) getResources().getText
(R.string.key_preference_des_alpha) );
mDesalphaPref.setTitle(R.string.title_preference_des_alpha);
mDesalphaPref.setDialogTitle
(R.string.title_preference_des_alpha);
mDesalphaPref.setSummary
(R.string.summary_preference_des_alpha);
mDesalphaPref.setDefaultValue("0.3");
mOriantationSmoothingParameterPrefCat.addPreference
(mDesalphaPref);
// Edit text preference
mDesgammaPref = new EditTextPreference(this);
mDesgammaPref.setKey( (String) getResources().getText
(R.string.key_preference_des_gamma) );
mDesgammaPref.setTitle(R.string.title_preference_des_gamma);
mDesgammaPref.setDialogTitle
(R.string.title_preference_des_gamma);
mDesgammaPref.setSummary
(R.string.summary_preference_des_gamma);
mDesgammaPref.setDefaultValue("1.0");
mOriantationSmoothingParameterPrefCat.addPreference
(mDesgammaPref);
}
}
@Override
public void onSharedPreferenceChanged(SharedPreferences
sharedPreferences, String key)
{
if ( key.equals(getResources().getString
(R.string.key_preference_orientation_smoothing_method)) )
{
mOrientationSmoothingPref.removePreference
(mOriantationSmoothingParameterPrefCat);
createOrientationSmoothingParameterPreferenceCategory();
}
}
-----
Y.T.
On Jun 13, 10:14 am, Jason Parekh <[email protected]> wrote:
> The preference framework will refresh the UI when a preference has a
> UI-visible attribute changed, for example the summary. So, you can just do
> myPreference.setSummary(myPreference.getValue()) (assuming you want to show
> the selected item as the summary of the preference).
>
> On Fri, Jun 12, 2009 at 4:29 AM, yoshitaka tokusho <[email protected]>wrote:
>
>
>
>
>
> > I have a PreferenceActivity building screen hierarchy from code, and I
> > need to force display hierarchy change dynamically when one of
> > SharedPreference value changed. I know this might be a kind of easy
> > quesiton, but I couldn't find answer anywhere in documentations or
> > discussion.
>
> > My PreferenceActivity is forming like this.
>
> > -----
> > public class MyPreferenceActivity extends PreferenceActivity
> > ...
> > setPreferenceScreen(createPreferenceHierarchy());
> > }
>
> > private PreferenceScreen createPreferenceHierarchy()
> > {
> > // Root
> > PreferenceScreen root = getPreferenceManager
> > ().createPreferenceScreen(this);
>
> > // Orientation tracking smoothing method preference
> > PreferenceScreen orientationsmoothingPref = getPreferenceManager
> > ().createPreferenceScreen(this);
> > orientationsmoothingPref.setKey( (String) getResources().getText
> > (R.string.key_screen_orientation_smoothing_method) );
> > orientationsmoothingPref.setTitle
> > (R.string.title_screen_orientation_smoothing_method);
> > orientationsmoothingPref.setSummary
> > (R.string.summary_screen_orientation_smoothing_method);
> > root.addPreference(orientationsmoothingPref);
>
> > // List preference
> > ListPreference orientationsmoothinglistPref = new ListPreference
> > (this);
> > orientationsmoothinglistPref.setEntries
> > (R.array.entries_orientation_smoothing_method_preference);
> > orientationsmoothinglistPref.setEntryValues
> > (R.array.entryvalues_orientation_smoothing_method_preference);
> > orientationsmoothinglistPref.setKey( (String) getResources().getText
> > (R.string.key_preference_orientation_smoothing_method) );
> > orientationsmoothinglistPref.setTitle
> > (R.string.title_preference_orientation_smoothing_method);
> > orientationsmoothinglistPref.setSummary
> > (R.string.summary_preference_orientation_smoothing_method);
> > orientationsmoothinglistPref.setDefaultValue("No");
>
> > orientationsmoothingPref.addPreference(orientationsmoothinglistPref);
>
> > // Orientation smoothing parameters category
> > PreferenceCategory orientationsmoothingparameterPrefCat = new
> > PreferenceCategory(this);
> > orientationsmoothingparameterPrefCat.setTitle
> > (R.string.title_category_orientation_smoothing_method_parameter);
> > orientationsmoothingPref.addPreference
> > (orientationsmoothingparameterPrefCat);
>
> > String orientationsmoothingmethodStr =
> > orientationsmoothinglistPref.getValue();
>
> > if ( orientationsmoothingmethodStr.compareTo("no") == 0 )
> > {
> > /* In case orientation smoothing method is "No" */
> > // Nothing to do.
> > }
> > else if ( orientationsmoothingmethodStr.compareTo("ma") == 0 )
> > {
> > /* In case orientation smoothing method is "Moving
> > Averaging" */
>
> > // Edit text preference
> > EditTextPreference maNPref = new EditTextPreference(this);
> > maNPref.setKey( (String) getResources().getText
> > (R.string.key_preference_ma_n) );
> > maNPref.setDialogTitle(R.string.title_preference_ma_n);
> > maNPref.setTitle(R.string.title_preference_ma_n);
> > maNPref.setSummary(R.string.summary_preference_ma_n);
> > maNPref.setDefaultValue("10");
> > orientationsmoothingparameterPrefCat.addPreference(maNPref);
>
> > }
> > else if ( orientationsmoothingmethodStr.compareTo("ses") == 0 )
> > {
> > /* In case orientation smoothing method is "Single
> > Exponential
> > Smoothing" */
>
> > // Edit text preference
> > EditTextPreference sesalphaPref = new EditTextPreference(this);
> > sesalphaPref.setKey( (String) getResources().getText
> > (R.string.key_preference_ses_alpha) );
> > sesalphaPref.setTitle(R.string.title_preference_ses_alpha);
>
> > sesalphaPref.setDialogTitle(R.string.title_preference_ses_alpha);
> > sesalphaPref.setSummary(R.string.summary_preference_ses_alpha);
> > sesalphaPref.setDefaultValue("0.3");
>
> > orientationsmoothingparameterPrefCat.addPreference(sesalphaPref);
>
> > }
> > else if ( orientationsmoothingmethodStr.compareTo("des") == 0 )
> > {
> > /* In case orientation smoothing method is "Single
> > Exponential
> > Smoothing" */
>
> > // Edit text preference
> > EditTextPreference desalphaPref = new EditTextPreference(this);
> > desalphaPref.setKey( (String) getResources().getText
> > (R.string.key_preference_des_alpha) );
> > desalphaPref.setTitle(R.string.title_preference_des_alpha);
>
> > desalphaPref.setDialogTitle(R.string.title_preference_des_alpha);
> > desalphaPref.setSummary(R.string.summary_preference_des_alpha);
> > desalphaPref.setDefaultValue("0.3");
>
> > orientationsmoothingparameterPrefCat.addPreference(desalphaPref);
>
> > // Edit text preference
> > EditTextPreference desgammaPref = new EditTextPreference(this);
> > desgammaPref.setKey( (String) getResources().getText
> > (R.string.key_preference_des_gamma) );
> > desgammaPref.setTitle(R.string.title_preference_des_gamma);
>
> > desgammaPref.setDialogTitle(R.string.title_preference_des_gamma);
> > desgammaPref.setSummary(R.string.summary_preference_des_gamma);
> > desgammaPref.setDefaultValue("1.0");
>
> > orientationsmoothingparameterPrefCat.addPreference(desgammaPref);
>
> > }
>
> > return root;
> > }
> > -----
>
> > What I want to do it is everytime ListPreference's value changes,
> > force redisplay PreferenceScreen. If anyone have any hint, please
> > reply here. Thanks.- Hide quoted text -
>
> - Show quoted text -
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---