2012-11-28 32 views
2

我想從EditText獲取字符串,然後從中讀取單個字符。我試過以下代碼:如何從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) 
+3

發表您的錯誤日誌? – juned

+0

我剛剛發佈了LogCat – Saturnian

+1

,當從中讀取數據時,可能編輯文本(佈局資源)不可用。檢查EditText是否能夠獲得空值。edt1 =(EditText)findViewById(R.id.myEditView); – kumar

回答

1

更改敬酒消息

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

這裏的問題是吐司消息。吐司不能顯示字符。所以將字符轉換爲字符串並顯示

+0

非常感謝!代碼實際上運行良好,只是makeText()方法的參數不正確!非常感謝! – Saturnian

0

chars[i]是整數值。如果你在錯誤仔細觀察日誌中,您將看到

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

(如果你傳遞整數參數,Android將查找與此ID的資源)

,你可以直接從字符串打印字符:

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

編輯文本(佈局資源)在讀取數據時可能不可用。只是檢查你是否能夠得到沒有空值,當你做

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

日誌edt1(通過日誌的System.out.println);

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

代替

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

試試這個:

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

它以同樣的方式與拉姆的