当设置为Android 4.0时,Eclipse无法识别numberPassword?

3

当我将字段的inputType设置为"numberPassword"时,Eclipse编辑器无法识别它,以下是代码:

<EditText
    android:id="@+id/pin_field"
    android:layout_width="236dp"
    android:layout_height="wrap_content"
    android:inputType="numberPassword">

    <requestFocus />
</EditText>

在“android:inputType”行上,我遇到了以下错误:
"error: Error: String types not allowed (at 'inputType' with value 'numberPassword')."

在顶部的“图形布局”选项卡中,我已将版本从2.3.3更改为Android 4.0,据我所读,这可能会修复它,但似乎并没有起作用。我可能错过了一些显而易见的东西,但无法弄清楚。
以下是有关inputType和“numberPassword”的Android文档:http://developer.android.com/reference/android/R.attr.html#inputType

1
项目的 Android 构建目标设置为 4.0? - dispake
你能否发布AndroidManifest文件? - dcanh121
API级别设置为14,我现在会发布清单。 - Peanut
糟糕,我知道这肯定是个显而易见的问题。在Eclipse中,我的项目构建目标设置为2.3.3,但Manifest文件中的minSdk为API级别14,即4.0,这让我感到困惑。如果您将其作为答案发布,我会给您50分的奖励。我需要实际测试一下,但我要等到周一才能进行测试,如果可以正常工作,我会在那时接受您的答案。 - Peanut
它能正常工作,将其发布为答案,我会接受它。 - Peanut
2个回答

3
<EditText
    android:id="@+id/pin_field"
    android:layout_width="236dp"
    android:layout_height="wrap_content"
    android:inputType="number"
    android:password="true"
    <requestFocus />
</EditText>

尝试使用上面的代码而不是你的代码

或者,您可以通过以下方式动态设置:

editText.setInputType( InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD);

更新: 通过以下代码设置InputFilter,只接受字母、数字或两者混合。
edittext.setFilters(new InputFilter[] {
    new InputFilter() {
        public CharSequence filter(CharSequence src, int start,
                int end, Spanned dst, int dstart, int dend) {
            if(src.equals("")){ // for backspace
                return src;
            }
            if(src.toString().matches("[a-zA-Z0-9 ]+")){
                return src;
            }
            return "";
        }
    }
});

请确保彻底测试!

我认为这种方法会导致你在侧边栏上获得“#”等内容,而这并不适用于我的应用程序。无论如何,我还是点了赞,因为我认为你的方法将来会有用,特别是在使用“:password =“true””时。 - Peanut
我需要"numberPassword"字段按照我在问题中陈述的方式工作。我可以过滤输入,但当Android已经提供了一个只有数字的键盘时,我真的不想这样做。我希望的是没有任何数字的键盘能够正常工作。你的代码可能有效,但问题是我为项目设置的生成级别错误,这是dispake在评论中指出并解决了我的问题。无论如何,感谢你的帮助,如果dispake没有发布他的答案,你仍然会得到一半的赏金。 - Peanut
看起来Dispake不打算发布他的答案,所以我会接受你的答案,我认为它将来可能会很有用。 - Peanut
你实际上不需要在 inputfilter 中使用这两个条件,因为即使第一个条件为真,你也会返回一个 "" 字符串,所以你可以自由地删除第一个 if 条件,因为当用户输入 "A" 时,它也会在不需要的情况下测试该条件并浪费时间 :) 如果我错了,请纠正我。! - MKJParekh
android:password现已被弃用。 - Sharp Edge

1

Dispake的评论给了我所需的线索

“项目的Android构建目标设置为4.0?”

我在清单文件中将minSdk设置为API级别14,即4.0且是正确的,但这使我错过了真正的问题。我在Eclipse中将项目的构建目标设置为2.3.3,需要更改为4.0。


2.3.3 改成了什么? - Mr.Noob
@Mr.Noob 我认为需要4.0版本才能使用numberPassword。 - Peanut
谢谢,伙计。它只支持Android 3.0及以上版本 :) 再次感谢 - Mr.Noob

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接