让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();
            }   
时间: 2024-12-24 02:52:22

让Android Preference Summary中实时显示内容变更的相关文章

shell脚本中echo显示内容带颜色

转自:http://www.cnblogs.com/lr-ting/archive/2013/02/28/2936792.html shell脚本中echo显示内容带颜色显示,echo显示带颜色,需要使用参数-e 格式如下: echo -e "\033[字背景颜色:文字颜色m字符串\033[0m" 例如: echo -e "\033[41;36m something here \033[0m" 其中41的位置代表底色, 36的位置是代表字的颜色 注:  1.字背景颜

shell脚本中echo显示内容带颜色显示

shell脚本中echo显示内容带颜色显示,echo显示带颜色,需要使用参数-e 格式如下: echo -e "\033[字背景颜色:文字颜色m字符串\033[0m" 例如:echo -e "\033[41;36m something here \033[0m" 其中41的位置代表底色, 36的位置是代表字的颜色 注: 1.字背景颜色和文字颜色之间是英文的"" 2.文字颜色后面有个m 3.字符串前后可以没有空格,如果有的话,输出也是同样有空格 下

实时显示内容(Thread+Handler)

class LocThread extends Thread{ @Override public void run() { while (true){ try { Thread.sleep(99); Message msg=new Message(); msg.what=1; locHandler.sendMessage(msg); }catch (Exception e){ e.printStackTrace(); } }  } } private Handler locHandler=new

在TextView中实时显示数据

//下面实时更新显示在textView中的数据handler = new Handler();runnable = new Runnable(){@Overridepublic void run(){// TODO Auto-generated method pushupTextView.setText(Integer.toString(Number.pushup_number)); handler.postDelayed(this, 1000); }}; handler.postDelayed

Android 6.0 中TimePicker显示为滚动样式的方法

在Android6.0中,TimePicker控件的默认样式为转盘的样式,就像这个样子: 如果想要显示为之前的滚动样式的话也很简单,只要在布局文件中设置TimePicker的timePickerMode属性为spinner就好了,即: [html] view plain copy <TimePicker android:id="@+id/id_add_timePicker" android:layout_width="match_parent" android

为什么我的Android SDK Manager中只显示已安装的package?

如图.在菜单packages中,前两项我都是选了的 . 两种可能: 1. 明显是楼主连不上谷歌的更新服务器了,换成国内的吧,左上Tools-->Options弹出的界面有两个可以填写的 ,下面一行HTTP Proxy Port:80,再下面Others里勾选1和3,然后再重新运行SDK Manager就行 2. SDK目录下的Tools目录里内容版本太低,换一个高版本的.可以去腾.讯大师兄里下载个新版本.地址:https://dsx.bugly.qq.com/repository/1(我就是去那

Android SDK Manager中不显示未下载的api解决方案

Android SDK 在线更新镜像服务器资源用户评价:  / 14 Android SDK 在线更新镜像服务器资源:大连东软信息学院镜像服务器地址:http://mirrors.neusoft.edu.cn 端口:80北京化工大学镜像服务器地址:IPv4: http://ubuntu.buct.edu.cn/ 端口:80IPv4: http://ubuntu.buct.cn/ 端口:80IPv6: http://ubuntu.buct6.edu.cn/ 端口:80上海GDG镜像服务器地址:ht

ROS在rviz中实时显示轨迹(nav_msgs/Path消息的使用)

消息结构说明nav_msgs/Path.msg结构#An array of poses that represents a Path for a robot to followHeader headergeometry_msgs/PoseStamped[] poses123geometry_msgs/PoseStamped.msg结构# A Pose with reference coordinate frame and timestampHeader headerPose pose123geo

运维开发:python websocket网页实时显示远程服务器日志信息

功能:用websocket技术,在运维工具的浏览器上实时显示远程服务器上的日志信息 一般我们在运维工具部署环境的时候,需要实时展现部署过程中的信息,或者在浏览器中实时显示程序日志给开发人员看.你还在用ajax每隔段时间去获取服务器日志?out了,试试用websocket方式吧 我用bottle框架,写了个websocket服务端,浏览器连接到websocket server,再用python subprocess获取远程服务器的日志信息,subprocess,就是用Popen调用shell的sh