Android 验证PreferenceFragment中的edittext

Android 验证PreferenceFragment中的edittext,android,xml,sharedpreferences,preferenceactivity,Android,Xml,Sharedpreferences,Preferenceactivity,我有一个EditTextPreference,用户可以在我的preferences.xml文件中输入蓝牙MAC地址。我使用android:digits将输入限制为有效字符,但这不会阻止某人添加太少或太多字符、双冒号等。如果他们这样做,应用程序将崩溃,出现无效MAC地址异常。有没有一种方法可以通过编程实现这一点 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <

我有一个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>

在EditText中使用正则表达式进行输入。这里有一个很好的教程:

@Override public void onCreateBundle savedInstanceState{super.onCreatesavedInstanceState;addPreferencesFromResourceR.xml.preferences;}我收到一个评论,只能编辑5分钟,因此忽略我的第一个错误。我得到了正则表达式,但我不确定如何处理首选项片段?我是否从资源中删除addPreferencesFromResource并使用onCreateView方法?这是我现有代码的一部分:@Override public void onCreateBundle savedInstanceState{super.onCreatesavedInstanceState;addPreferencesFromResourceR.xml.preferences;}@john8791 Yes。以防万一,这里有一个链接:所有的示例似乎仍然显示使用XML而不是编程来实现。在连接之前,我在我的主要活动中检查了MAC地址的有效性,而不是在我的首选项片段中,就像我最初使用regex时想做的那样:^[0-9a-f]{2}[:-]{5}[0-9a-f]{2}$regex tutorial非常有用