2011-12-29 54 views
2

我有一個文本視圖定義爲類屬性,以便我可以在整個類中訪問它。在onCreate方法我做到以下幾點:在TextView上設置文本onTextChanged

chars = (TextView) findViewById(R.id.chars); 
chars.setText("300"); 

後來...:

public void onTextChanged(CharSequence s, int start, int before, 
     int count) { 

    int max = Integer.parseInt((String)chars.getText()); 
    int current = (message.getText().toString()).length(); 

    chars.setText(max-current); 
} 

嗯,其實我只是取回300爲字符串,將其轉換爲整數格式和計算max和之間的區別當前文本長度。然後我想在文本視圖上將該值設置爲文本。但這失敗了

12-29 20:37:06.155: E/AndroidRuntime(2165): FATAL EXCEPTION: main 
12-29 20:37:06.155: E/AndroidRuntime(2165): android.content.res.Resources$NotFoundException: String resource ID #0x12b 
12-29 20:37:06.155: E/AndroidRuntime(2165):  at android.content.res.Resources.getText(Resources.java:201) 
12-29 20:37:06.155: E/AndroidRuntime(2165):  at android.widget.TextView.setText(TextView.java:2857) 
12-29 20:37:06.155: E/AndroidRuntime(2165):  at com.markupartist.android.actionbar.example.ComposeActivity$3.onTextChanged(ComposeActivity.java:86) 
12-29 20:37:06.155: E/AndroidRuntime(2165):  at android.widget.TextView.sendOnTextChanged(TextView.java:6295) 
12-29 20:37:06.155: E/AndroidRuntime(2165):  at android.widget.TextView.handleTextChanged(TextView.java:6336) 
12-29 20:37:06.155: E/AndroidRuntime(2165):  at android.widget.TextView$ChangeWatcher.onTextChanged(TextView.java:6485) 
12-29 20:37:06.155: E/AndroidRuntime(2165):  at android.text.SpannableStringBuilder.sendTextChange(SpannableStringBuilder.java:889) 
12-29 20:37:06.155: E/AndroidRuntime(2165):  at android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:352) 
12-29 20:37:06.155: E/AndroidRuntime(2165):  at android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:269) 
12-29 20:37:06.155: E/AndroidRuntime(2165):  at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:432) 
12-29 20:37:06.155: E/AndroidRuntime(2165):  at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:409) 
12-29 20:37:06.155: E/AndroidRuntime(2165):  at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:28) 
12-29 20:37:06.155: E/AndroidRuntime(2165):  at android.view.inputmethod.BaseInputConnection.replaceText(BaseInputConnection.java:654) 
12-29 20:37:06.155: E/AndroidRuntime(2165):  at android.view.inputmethod.BaseInputConnection.setComposingText(BaseInputConnection.java:415) 
12-29 20:37:06.155: E/AndroidRuntime(2165):  at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:318) 
12-29 20:37:06.155: E/AndroidRuntime(2165):  at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:75) 
12-29 20:37:06.155: E/AndroidRuntime(2165):  at android.os.Handler.dispatchMessage(Handler.java:99) 
12-29 20:37:06.155: E/AndroidRuntime(2165):  at android.os.Looper.loop(Looper.java:123) 
12-29 20:37:06.155: E/AndroidRuntime(2165):  at android.app.ActivityThread.main(ActivityThread.java:3683) 
12-29 20:37:06.155: E/AndroidRuntime(2165):  at java.lang.reflect.Method.invokeNative(Native Method) 
12-29 20:37:06.155: E/AndroidRuntime(2165):  at java.lang.reflect.Method.invoke(Method.java:507) 
12-29 20:37:06.155: E/AndroidRuntime(2165):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
12-29 20:37:06.155: E/AndroidRuntime(2165):  at dalvik.system.NativeStart.main(Native Method) 

任何想法最新怎麼了?

回答

2

這裏發生了什麼是你試圖設置的整數值實際上是作爲一個資源ID。所以chars.setText(String.valueOf(max-current));應該修復它..

編輯: 在另一個說明。當您嘗試從onTextChanged中設置charsTextView上的文本時,它將再次觸發onTextChanged,這可能會以永無止境的循環結束。

+0

完美謝謝! – 2011-12-29 21:24:39

2

嘗試以下

chars.setText(String.valueOf(max-current));