当前位置:  开发笔记 > Android > 正文

Android偏好添加不需要的字符

如何解决《Android偏好添加不需要的字符》经验,为你挑选了1个好方法。

SharedPreferences在Android中遇到了很大的问题.一旦应用程序关闭,首选项就会向我的一个字符串值添加不需要的字符.实际上它是一个可配置的转义序列.

我有一个简单的设置,一个MainActivity包含

@Override
protected void onStart() {
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    sequence = prefs.getString("escape_sequence", "");
}

以及设置值的首选项屏幕.当我打开应用程序进入prefences屏幕时,正确设置值\n\n并返回到MainActivity断点正确显示序列为Java.lang.String, value(char[2])= "\n\n", count=2.当我现在通过android studio重新启动应用程序时,代码中的相同断点突然显示:Java.lang.String, value(char[6])= "\n\n ", count=6,包含4个Space和10个转义\u0000字符.

任何人都可以为什么会这样,我能做些什么呢?

顺便说一下,到目前为止,我还没有触及App中任何地方的SharedPreferences.Editor.我是通过PreferencesScreen严格完成的.因此,在应用程序的任何位置都不会进行覆盖.也不应该应用默认值,但android:defaultValue="\n\n"无论如何设置都是如此.

编辑:

我找到了原因:如果换行符位于首选项的末尾,则android会添加空格.我不知道为什么.

编辑:

这是自定义首选项代码:

public class SequencePreference extends DialogPreference {
    EditText sequenceInput;

    public SequencePreference(Context context, AttributeSet attrs) {
        super(context, attrs);

        setDialogLayoutResource(R.layout.dialog_preference_sequence);
        setPositiveButtonText(R.string.settings_sequence_ok);
        setNegativeButtonText(R.string.settings_sequence_cancel);

        setDialogIcon(null);
    }

    @Override
    protected View onCreateDialogView() {
        View view = super.onCreateDialogView();
        sequenceInput= (EditText)view.findViewById(R.id.sequence_input);

        return view;
    }

    @Override
    protected void onDialogClosed(boolean positiveResult) {
        // When the user selects "OK", persist the new value
        if (positiveResult) {
            String sequenceValue = new String( sequenceInput.getText().toString() );

            String[] parts = sequenceValue.split("-");
            if(parts.length == 2) {
                persistString(parts[1]);
            }
        }
    }
}

小智.. 9

我认为这是Android API 18和更新的错误,当SharedPreferences字符串结束时会注入额外的空格\n.有关更多信息,请参阅:

自由软件 :///////////



1> 小智..:

我认为这是Android API 18和更新的错误,当SharedPreferences字符串结束时会注入额外的空格\n.有关更多信息,请参阅:

自由软件 :///////////

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有