android - 在 TextView onTextChanged 上设置文本

标签 android

我有一个定义为类属性的 TextView ,这样我就可以在整个类中访问它。在 onCreate 方法中,我执行以下操作:

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 检索为字符串,将其转换为整数格式并计算最大文本长度和当前文本长度之间的差异。然后我想将此值设置为 TextView 中的文本。但这失败了

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)

有什么想法吗?

最佳答案

这里发生的是您尝试设置的整数值实际上被用作资源 ID。所以 chars.setText(String.valueOf(max-current)); 应该修复它..

编辑: 另一个注意事项。当您尝试从 onTextChanged 内部在 chars TextView 上设置文本时,它会再次触发 onTextChanged,这可能以永无止境的循环结束。

关于android - 在 TextView onTextChanged 上设置文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8673583/

相关文章:

android - LocationServices getFusedLocationProviderClient无法正常工作

Android:将 fragment 添加到 Activity

android同时显示SIM卡和手机联系人

android - Android 中 ListView 中的复合列表项

android - Kotlin 执行可选 Action

android - 在表面 View 中授予权限后相机未打开

android - 如何在 EditText View 的焦点上默认使用字母键盘?

javascript - RecyclerView解析JSON数据后添加onClick

android - 当用户从最近的应用程序列表中删除应用程序时,如何取消警报管理器警报?

java - 检查通话中断 - Android Lollipop