的setText不工作的EditText preference [英] setText not working for EditTextPreference

查看:173
本文介绍了的setText不工作的EditText preference的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想设定值的EditText preference 项目

主机preference.setText(未设定);

但文字不显示

我想告诉它像使用名称此处

 公共类HostSettingActivity扩展preferenceActivity {

    私人最终字符串MY_DEBUG_TAG =SettingActivity;
    共享preferences共享preFS;

    @覆盖
    保护无效的onCreate(包savedInstanceState){
        Log.i(MY_DEBUG_TAG,HostSettingActivity入门);
        super.onCreate(savedInstanceState);
        共享preFS = GET preferenceManager()getShared preferences()。
        集preferenceScreen(创建preferenceHierarchy());
    }

    @覆盖
    保护无效的onDestroy(){
        super.onDestroy();
        Log.e(MY_DEBUG_TAG,关于消灭);
    }

    私人preferenceScreen创造preferenceHierarchy(){

        // 根
        。preferenceScreen根= GET preferenceManager()创建preferenceScreen(本);

        preferenceCategory dialogBased prefCat =新的preferenceCategory(本);
        dialogBased prefCat.setTitle(主机设置);
        root.add preference(dialogBased prefCat);

        的EditText preference主机preference =新的EditText preference(本);
        举办​​preference.setKey(主持人);
        举办​​preference.setDialogTitle(主机);
        举办​​preference.setText(未设定);
        主机preference.setDefaultValue(http://example.com);
        主机preference.setSummary(设置主机);
        dialogBased prefCat.add preference(主机preference);

        的EditText preference端口preference =新的EditText preference(本);
        端口preference.setKey(港);
        端口preference.setDialogTitle(港);
        端口preference.setDefaultValue(8080);
        端口preference.setSummary(设置端口);
        dialogBased prefCat.add preference(端口preference);

        举办​​preference.setOn preferenceChangeListener(新在preferenceChangeListener(){
            @覆盖
            在preferenceChange公共布尔(preference preference,对象为newValue){
                的EditText preference ETP =(EditText上preference)preference;

                串newHostValue = newValue.toString();
                Log.i(MY_DEBUG_TAG,新建主机+ newHostValue);
                etp.setText(newHostValue);
                返回true;
            }
        });
        返回根;
    }

}
 

解决方案

文字是不是看到的EditText preference,但可以进行编辑。

我们所看到的是标题,它是由设置的setTitle

如果你想显示在标题的编辑的文本,则必须将其设置为标题自己。

I'm trying to set value for EditTextPreference item

with hostPreference.setText("Not yet set");

But text is not showing

I want to show it like Use Name here

public class HostSettingActivity extends PreferenceActivity {

    private final String MY_DEBUG_TAG = "SettingActivity";
    SharedPreferences sharedPrefs;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        Log.i(MY_DEBUG_TAG, "HostSettingActivity Started");
        super.onCreate(savedInstanceState);
        sharedPrefs = getPreferenceManager().getSharedPreferences(); 
        setPreferenceScreen(createPreferenceHierarchy());
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.e(MY_DEBUG_TAG, "On Destroy");
    }

    private PreferenceScreen createPreferenceHierarchy() {

        // Root
        PreferenceScreen root = getPreferenceManager().createPreferenceScreen(this);

        PreferenceCategory dialogBasedPrefCat = new PreferenceCategory(this);
        dialogBasedPrefCat.setTitle("Host Settings");
        root.addPreference(dialogBasedPrefCat);

        EditTextPreference hostPreference = new EditTextPreference(this);
        hostPreference.setKey("host");
        hostPreference.setDialogTitle("Host");
        hostPreference.setText("Not yet set");
        hostPreference.setDefaultValue("http://example.com");
        hostPreference.setSummary("Set host");
        dialogBasedPrefCat.addPreference(hostPreference);

        EditTextPreference portPreference = new EditTextPreference(this);
        portPreference.setKey("port");
        portPreference.setDialogTitle("Port");
        portPreference.setDefaultValue("8080");
        portPreference.setSummary("Set port");
        dialogBasedPrefCat.addPreference(portPreference);

        hostPreference.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
            @Override
            public boolean onPreferenceChange(Preference preference, Object newValue) {
                EditTextPreference etp = (EditTextPreference) preference;

                String newHostValue = newValue.toString();
                Log.i(MY_DEBUG_TAG, "New Host: "+newHostValue);
                etp.setText(newHostValue);
                return true;
            }
        });
        return root;
    }

}

解决方案

Text is not seen in EditTextPreference, but can be edited.

What is seen is TITLE, and it is set by setTitle.

If you want to display your edited text in title, you must set it as title yourself.

这篇关于的setText不工作的EditText preference的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆