Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android中检测editText inputType的最佳方法?_Android_Android Keypad - Fatal编程技术网

在Android中检测editText inputType的最佳方法?

在Android中检测editText inputType的最佳方法?,android,android-keypad,Android,Android Keypad,我开发了一个简单的键盘 这是一款T9键盘,专为带有硬件键盘的手机设计 当我想在标准的EditText中写入一些内容时,我没有问题,但当我尝试使用android:inputType=“phone”或android:inputType=“number”在EditText中写入数字时,键盘仍会尝试写入字母 我的问题是:从我的自定义键盘上检测我关注的编辑文本是否仅为数字、仅为文本等的最佳和最简单的方法是什么? 如何从键盘检测输入类型 我希望你们中有人在过去已经解决了这个问题,可以帮助…提前谢谢 试试这样

我开发了一个简单的键盘

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

当我想在标准的EditText中写入一些内容时,我没有问题,但当我尝试使用
android:inputType=“phone”
android:inputType=“number”
在EditText中写入数字时,键盘仍会尝试写入字母

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


我希望你们中有人在过去已经解决了这个问题,可以帮助…提前谢谢

试试这样的方法:

if(txt.getInputType()==InputType.TYPE_CLASS_PHONE){
//do something
}
还要检查这个问题:它描述了如何使用InputMethodManager

**

另一种方法:

**

开发自定义键盘时:如下所述

您扩展了InputMethodService,该服务在StartInputView(EditorInfo信息,布尔重新启动)上提供方法


onStartInputView具有EditorInfo参数,该参数包含一个字段,您可以通过该字段了解当前的编辑文本输入类型

if(txt.getInputType()==InputType.TYPE_CLASS_PHONE){
//do something
}
还要检查这个问题:它描述了如何使用InputMethodManager

**

另一种方法:

**

开发自定义键盘时:如下所述

您扩展了InputMethodService,该服务在StartInputView(EditorInfo信息,布尔重新启动)上提供方法

onStartInputView具有EditorInfo参数,该参数包含一个字段,您可以从以下位置的“处理不同的输入类型”下的“了解当前编辑文本输入类型:

当输入字段收到焦点且IME启动时,系统调用
onStartInputView()
,传入一个
EditorInfo
对象,该对象包含有关输入类型和文本字段其他属性的详细信息。在此对象中,
inputType
字段包含文本字段的输入类型

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

在“处理不同的输入类型”下:

当输入字段收到焦点且IME启动时,系统调用
onStartInputView()
,传入一个
EditorInfo
对象,该对象包含有关输入类型和文本字段其他属性的详细信息。在此对象中,
inputType
字段包含文本字段的输入类型


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

键盘是一种服务,其中没有视图(软键盘布局除外),并且与第三方应用程序接口。所以我不能调用
txt.getInputType()
…我想重写获取EditorInfo或textView的方法…有什么建议吗?在您建议我的示例中,有一个
String id
设置为
Settings.Secure.getString(getContentResolver(),Settings.Secure.DEFAULT\u INPUT\u method),这个方法返回什么?谢谢@Mina Samy,你给了我很多信息!键盘是一项服务,其中没有视图(软键盘布局除外),它与第三方应用程序接口。所以我不能调用
txt.getInputType()
…我想重写获取EditorInfo或textView的方法…有什么建议吗?在您建议我的示例中,有一个
String id
设置为
Settings.Secure.getString(getContentResolver(),Settings.Secure.DEFAULT\u INPUT\u method),这个方法返回什么?谢谢@Mina Samy,你给了我很多信息!这正是我所做的。在onStartInputView()中,如果inputType&inputType.TYPE\u CLASS\u PHONE条件为true,我将X=true设置为true……但运气不好……您有示例代码吗?也许我遗漏了一些非常愚蠢的东西。@Ben目前,你的问题清楚地问到了如何判断视图的输入类型,这就是其中的机制。如果这不是你遇到的问题,那么你应该更新你的问题并加入一些代码。对不起@Karakuri,我现在在火车上,通常我会发布所有代码。明天我就可以编辑我的问题了,但我想你帮了我很多忙,证实了我走上了正确的道路。这正是我所做的。在onStartInputView()中,如果inputType&inputType.TYPE\u CLASS\u PHONE条件为true,我将X=true设置为true……但运气不好……您有示例代码吗?也许我遗漏了一些非常愚蠢的东西。@Ben目前,你的问题清楚地问到了如何判断视图的输入类型,这就是其中的机制。如果这不是你遇到的问题,那么你应该更新你的问题并加入一些代码。对不起@Karakuri,我现在在火车上,通常我会发布所有代码。明天我就可以编辑我的问题了,但我想你帮了我很多忙,证实了我的方法是正确的。