问题描述
- 从EditText中获取单个字符
-
String PT = pt.getText().toString(); int len = PT.length(); char chars[] = PT.toCharArray(); for(int i=0;i<len;i++){ Toast.makeText(encrypt.thischars[i] 0).show(); }
这段代码是用在EditText中读取字符串,获取单个字符的。但是结果出了一个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 011-28 12:46:43.688: W/KeyCharacterMap(1674): Using default keymap: /system/usr/keychars/qwerty.kcm.bin11-28 12:46:54.442: W/ResourceType(1674): No package identifier when getting value for resource number 0x0000006111-28 12:46:54.448: D/AndroidRuntime(1674): Shutting down VM11-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: main11-28 12:46:54.459: E/AndroidRuntime(1674): android.content.res.Resources$NotFoundException: String resource ID #0x6111-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)
解决方案
Toast.makeText(encrypt.thischars[i] + """" 0).show();
原错误在于char会转换成int导致寻找int对应的resource。
解决方案二:
Toast.makeText(encrypt.thischars[i] + """" 0).show();
makeText第二个参数可以是int类型的,和CharSequence类型的。char转型成int了,所以像cytown所的,会去找资源。
如果写成chars[i]+""""。转型成string类型的了。直接显示字符串内容。最后一个参数是持续时间。
ps:
public final class String implements Serializable Comparable<String> CharSequence
时间: 2025-01-18 23:16:11