在 Android 中检测 editText 输入类型的最佳方法?

Best way to detect editText inputType in Android?

我开发了一个简单的键盘。

这是专为带有硬件键盘的手机设计的 T9 键盘。

当我想在标准 EditText 中写入内容时没有问题,但是当我尝试在带有 android:inputType="phone"android:inputType="number" 的 ediText 中写入数字时,键盘仍会尝试写入字母。

我的问题是:从我的自定义键盘检测我关注的 editText 是否是纯数字、纯文本等的最好和最简单的方法是什么? 如何从我的键盘检测输入类型?

我希望你们中的某个人过去已经解决了这个问题并且可以提供帮助...提前谢谢!

尝试这样的事情:

if(txt.getInputType()==InputType.TYPE_CLASS_PHONE){
//do something
}

同时检查这个问题:Android: Determine active input method from code 它描述了使用 InputMethodManager

**

另一种方法:

**

开发自定义键盘时:如此处所述http://developer.android.com/guide/topics/text/creating-input-method.html#IMEUI

你扩展了InputMethodService,它提供了方法onStartInputView(EditorInfo info, boolean restarting)

onStartInputView 有 EditorInfo 参数,它有 inputType 字段,你可以从

知道当前的编辑文本输入类型

this page 上的“处理不同的输入类型”下:

When an input field receives focus and your IME starts, the system calls onStartInputView(), passing in an EditorInfo object that contains details about the input type and other attributes of the text field. In this object, the inputType field contains the text field's input type.

然后继续解释如何读取输入类型以及许多输入类型(及其相关标志)的含义。