如何从 EditText 获取字符?

Posted

技术标签:

【中文标题】如何从 EditText 获取字符?【英文标题】:How do I get characters from EditText? 【发布时间】:2012-11-15 23:40:47 【问题描述】:

我想从 EditText 中获取字符串,然后从中读取单个字符。我试过以下代码:

String PT = pt.getText().toString(); 
int len = PT.length(); 
char chars[] = PT.toCharArray(); 
for(int i=0;i<len;i++)
 Toast.makeText(encrypt.this,chars[i], 0).show(); 

但是,我收到强制关闭错误。我哪里错了?

我对这一切都很陌生!

这是 LogCat:

11-28 12:41:01.228: E/androidRuntime(1632):     at android.app.ActivityThread.main(ActivityThread.java:3683)
11-28 12:41:01.228: E/AndroidRuntime(1632):     at java.lang.reflect.Method.invokeNative(Native Method)
11-28 12:41:01.228: E/AndroidRuntime(1632):     at java.lang.reflect.Method.invoke(Method.java:507)
11-28 12:41:01.228: E/AndroidRuntime(1632):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
11-28 12:41:01.228: E/AndroidRuntime(1632):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
11-28 12:41:01.228: E/AndroidRuntime(1632):     at dalvik.system.NativeStart.main(Native Method)
11-28 12:46:43.688: W/KeyCharacterMap(1674): No keyboard for id 0
11-28 12:46:43.688: W/KeyCharacterMap(1674): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
11-28 12:46:54.442: W/ResourceType(1674): No package identifier when getting value for resource number 0x00000061
11-28 12:46:54.448: D/AndroidRuntime(1674): Shutting down VM
11-28 12:46:54.448: W/dalvikvm(1674): threadid=1: thread exiting with uncaught exception (group=0x40015560)
11-28 12:46:54.459: E/AndroidRuntime(1674): FATAL EXCEPTION: main
11-28 12:46:54.459: E/AndroidRuntime(1674): android.content.res.Resources$NotFoundException: String resource ID #0x61
11-28 12:46:54.459: E/AndroidRuntime(1674):     at android.content.res.Resources.getText(Resources.java:201)
11-28 12:46:54.459: E/AndroidRuntime(1674):     at android.widget.Toast.makeText(Toast.java:258)
11-28 12:46:54.459: E/AndroidRuntime(1674):     at com.project.DENCrypt.encrypt$1.onClick(encrypt.java:33)
11-28 12:46:54.459: E/AndroidRuntime(1674):     at android.view.View.performClick(View.java:2485)
11-28 12:46:54.459: E/AndroidRuntime(1674):     at android.view.View$PerformClick.run(View.java:9080)
11-28 12:46:54.459: E/AndroidRuntime(1674):     at android.os.Handler.handleCallback(Handler.java:587)
11-28 12:46:54.459: E/AndroidRuntime(1674):     at android.os.Handler.dispatchMessage(Handler.java:92)
11-28 12:46:54.459: E/AndroidRuntime(1674):     at android.os.Looper.loop(Looper.java:123)
11-28 12:46:54.459: E/AndroidRuntime(1674):     at android.app.ActivityThread.main(ActivityThread.java:3683)
11-28 12:46:54.459: E/AndroidRuntime(1674):     at java.lang.reflect.Method.invokeNative(Native Method)
11-28 12:46:54.459: E/AndroidRuntime(1674):     at java.lang.reflect.Method.invoke(Method.java:507)
11-28 12:46:54.459: E/AndroidRuntime(1674):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
11-28 12:46:54.459: E/AndroidRuntime(1674):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
11-28 12:46:54.459: E/AndroidRuntime(1674):     at dalvik.system.NativeStart.main(Native Method)

【问题讨论】:

我刚刚发布了 LogCat 可能是编辑文本(布局资源)在读取数据时不可用。只需检查您在执行 EditText edt1 = (EditText)findViewById(R.id.myEditView); 时是否无法获得空值; 【参考方案1】:
Toast.makeText(encrypt.this,String.valueOf(chars[i]), 0).show();

而不是

Toast.makeText(encrypt.this,chars[i], 0).show();

【讨论】:

【参考方案2】:

试试这个:

Toast.makeText(encrypt.this,chars[i] + "", 0).show();

它与Ram's的方式相同

【讨论】:

【参考方案3】:

将您的 toast 消息更改为

Toast.makeText(encrypt.this,Character.toString(chars[i]), Toast.LENGTH_SHORT).show(); 

这里的问题在于 Toast 消息。 Toast 不能显示字符。所以将字符转换为字符串并显示

【讨论】:

谢谢!代码实际上运行良好,只是 makeText() 方法的参数不正确!谢谢一百万!【参考方案4】:

chars[i] 是整数值。如果您仔细查看错误日志,您会看到

android.content.res.Resources$NotFoundException: String resource ID #0x61

(如果你传递整数参数,android会用这个Id查找资源)

你可以直接打印字符串中的字符:

Toast.makeText(encrypt.this,PT[i], 0).show();

【讨论】:

【参考方案5】:

可能是编辑文本(布局资源)在读取数据时不可用。只需检查您是否能够在执行时获得空值

EditText edt1 = (EditText)findViewById(R.id.myEditView);

log edt1(通过log,system.out.println);

【讨论】:

以上是关于如何从 EditText 获取字符?的主要内容,如果未能解决你的问题,请参考以下文章

从android中的edittext框中获取XXX-XXX-XXXX格式的电话号码

如何从 EditText 获取字符?

android中edittex焦点设置和弹不弹出输入法的问题

Android中EditTex焦点设置和弹不弹出输入法的问题

如何从RecyclerView中的EditText获取字符串值?

如何在edittext中设置ImageView [复制]