【问题标题】:Validate edittext in PreferenceFragment验证 PreferenceFragment 中的 edittext
【发布时间】:2014-10-27 16:37:16
【问题描述】:

我有一个 EditTextPreference 供用户在我的preferences.xml 文件中输入蓝牙 MAC 地址。我正在使用 android:digits 将输入限制为有效字符,但这不会阻止某人添加太少或太多字符、双冒号等。如果他们这样做,应用程序会因无效的 MAC 地址异常而崩溃。有没有办法以编程方式做到这一点?

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">


    <PreferenceCategory android:title="Bluetooth Settings">

        <EditTextPreference
            android:key="prefMacAddress"
            android:title="MAC Address"
            android:lines="1"
            android:maxLines="1"
            android:summary="Enter MAC Address of the Module"
            android:dialogTitle="MAC Address"
            android:dialogMessage="Enter MAC Address of the Module"   
            android:defaultValue="20:13:07:26:24:32"
            android:digits="0123456789abcdef:"/>

    </PreferenceCategory>

</PreferenceScreen>

【问题讨论】:

    标签: android xml sharedpreferences preferenceactivity


    【解决方案1】:

    在 EditText 中使用正则表达式进行输入。这是一个很好的教程:http://www.vogella.com/tutorials/JavaRegularExpressions/article.html

    【讨论】:

    • @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences); }
    • 我得到一个 cmets 只能编辑 5 分钟的错误,所以忽略我的第一个。我得到了正则表达式,但我不确定如何做偏好片段?我是否删除 addPreferencesFromResource 并使用 onCreateView() 方法?这是我现有代码的一部分:@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences); }
    • @john8791 是的。以防万一这里有一个链接:android-er.blogspot.com/2012/07/…
    • 所有示例似乎仍然显示在 XML 中而不是以编程方式进行。我最终在连接之前在我的主活动中检查了 MAC 地址的有效性,而不是在我的首选项片段中,就像我最初使用正则表达式所做的那样:“^([0-9a-f]{2}[:-]) {5}([0-9a-f]{2})$" 正则表达式教程很有帮助
    猜你喜欢
    • 2012-01-17
    • 2013-08-05
    • 2017-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-05
    • 1970-01-01
    相关资源
    最近更新 更多