首页 > 代码库 > 让Android Preference Summary中实时显示内容变更

让Android Preference Summary中实时显示内容变更

Android中提供的Preference可以保存用户的喜好设置。在启明星安卓版员工通讯录里,有一个地方保存用户输入的URL就是用的Preference。

但是Preference默认显示的是Summary的值。我们希望他们可以显示用户输入的只。

先看一下效果:

如果用户未输入,这Summary提示让用户输入

 

如果用户输入了,这显示用户的输入值

 

要实现上面的功能,

(1)增加XML配置文件

<EditTextPreference        android:key="url"        android:title="please enter url"            >    </EditTextPreference>

 

(2)执行OnSharedPreferenceChangeListener 接口

public class SettingsFragment extends PreferenceFragment   implements OnSharedPreferenceChangeListener {    private EditTextPreference url;        @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        addPreferencesFromResource(R.xml.c21preference);                url = (EditTextPreference)getPreferenceScreen().findPreference("url");             }         @Override    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {        /* get preference */                  if(key.equals("url"))           {               InitTextSummary();            }    }            public void InitTextSummary()    {                        if(url.getText().equals(""))        {             url.setSummary("请输入接口地址,例如 http://demo.dotnetcms.org/worklog/");         }        else        {             url.setSummary(url.getText());        }    }             @Override        public void onResume() {            super.onResume();                         InitTextSummary();            getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);        }        @Override        public void onPause() {            getPreferenceManager().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);            super.onPause();        }    

如此即可。

(3)获取用户的配置值

 public void Read(View view){            // SharedPreferences settings = getSharedPreferences("c21preference", MODE_PRIVATE);          // String txt=settings.getString("ringtone", "xxx");        // Toast.makeText(getApplicationContext(),txt, Toast.LENGTH_SHORT).show();                    SharedPreferences settings=PreferenceManager.getDefaultSharedPreferences(this);         String txt=settings.getString("url", "xxx");              Toast.makeText(getApplicationContext(),txt, Toast.LENGTH_SHORT).show();            }   

 

让Android Preference Summary中实时显示内容变更