1

在我的 android 应用程序上,第一次运行应用程序时,用户必须输入许可证。许可证的格式是###-XXX-###-###一个#数字,X一个字符。我把格式作为提示,但这还不够。我怎样才能做到这样并且用户不输入-,它只出现在 3 个字符之后?

更新 :

那是我的代码,它可以工作:

licenseEditText.addTextChangedListener(new TextWatcher() {

            public void afterTextChanged(Editable s) {
                System.out.println("afterTextChanged");
                if (s.length() == 3) {
                    s.append("-");
                }
                if (s.length() == 7) {
                    s.append("-");
                }
                if (s.length() == 11) {
                    s.append("-");
                }
                if (s.length() == 15)
                    ok.performClick();
            }

            public void beforeTextChanged(CharSequence s, int start, int count,
                    int after) {
                System.out.println("beforeTextChanged");
            }

            public void onTextChanged(CharSequence s, int start, int before,
                    int count) {
                System.out.println("onTextChanges");

            }
        });
4

3 回答 3

3

设置 a TextWatcher,在其中将 intered text 与 a 进行比较regularExpression。并在前 3 个字符后添加其他代码,将“-”附加到 intered characterSet 。

于 2011-11-28T08:44:06.683 回答
1

您可以使用 4 个 EditTexts 并将 textwathers 附加到它们 - 类似于 windows 的许可证输入

于 2011-11-28T08:55:12.207 回答
0

尝试使用 % 运算符

if( s.length() == 15) {
   // s.length() = 15
} else if( s.length() % 4 == 3) {
   // s.length = {3, 7, 11, 19, ....}
   // so s.length != 15
}

通过这种方式,您可以减少代码重复。有关更多信息,请查看:维基百科 - 模运算

于 2014-01-27T12:08:10.087 回答