簡體   English   中英

添加文本偵聽器導致找不到異常

[英]add text listener causing not found exception

在NewTweetActivity.java中,我有:

@Override
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.newtweet);
    listenToChange();
}

public void listenToChange(){
    TextView cEditText = (TextView) findViewById(R.id.tweetCountTextView);
    EditText tView = (EditText) findViewById(R.id.tweetComposerEditText);
    tView.addTextChangedListener(new TextWatcher() {

        public void afterTextChanged(Editable s) {
            int len = (140 - s.length());
            cEditText.setText(len);
        }

        public void beforeTextChanged(CharSequence arg0, int arg1,
                int arg2, int arg3) {
            // TODO Auto-generated method stub

        }

        public void onTextChanged(CharSequence arg0, int arg1, int arg2,
                int arg3) {
            // TODO Auto-generated method stub

        }
    });
}

但是,它要求我將cEditText聲明為final,但是當我這樣做時,它無法加載newtweet布局。

如果將cEditText聲明放入afterTextChanged ,則會加載布局,但是當我觸發afterTextChanged (通過在EditText中鍵入),將導致以下情況:

07-08 20:44:27.054: E/AndroidRuntime(4417): FATAL EXCEPTION: main
07-08 20:44:27.054: E/AndroidRuntime(4417): android.content.res.Resources$NotFoundException: String resource ID #0x8b
07-08 20:44:27.054: E/AndroidRuntime(4417):     at android.content.res.Resources.getText(Resources.java:201)
07-08 20:44:27.054: E/AndroidRuntime(4417):     at android.widget.TextView.setText(TextView.java:2911)
07-08 20:44:27.054: E/AndroidRuntime(4417):     at com.jgnzapps.quark.NewTweetActivity$1.afterTextChanged(NewTweetActivity.java:31)
07-08 20:44:27.054: E/AndroidRuntime(4417):     at android.widget.TextView.sendAfterTextChanged(TextView.java:6532)
07-08 20:44:27.054: E/AndroidRuntime(4417):     at android.widget.TextView$ChangeWatcher.afterTextChanged(TextView.java:6720)
07-08 20:44:27.054: E/AndroidRuntime(4417):     at android.text.SpannableStringBuilder.sendTextHasChanged(SpannableStringBuilder.java:897)
07-08 20:44:27.054: E/AndroidRuntime(4417):     at android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:353)
07-08 20:44:27.054: E/AndroidRuntime(4417):     at android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:269)
07-08 20:44:27.054: E/AndroidRuntime(4417):     at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:432)
07-08 20:44:27.054: E/AndroidRuntime(4417):     at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:409)
07-08 20:44:27.054: E/AndroidRuntime(4417):     at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:28)
07-08 20:44:27.054: E/AndroidRuntime(4417):     at android.view.inputmethod.BaseInputConnection.replaceText(BaseInputConnection.java:654)
07-08 20:44:27.054: E/AndroidRuntime(4417):     at android.view.inputmethod.BaseInputConnection.setComposingText(BaseInputConnection.java:415)
07-08 20:44:27.054: E/AndroidRuntime(4417):     at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:318)
07-08 20:44:27.054: E/AndroidRuntime(4417):     at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:75)
07-08 20:44:27.054: E/AndroidRuntime(4417):     at android.os.Handler.dispatchMessage(Handler.java:99)
07-08 20:44:27.054: E/AndroidRuntime(4417):     at android.os.Looper.loop(Looper.java:130)
07-08 20:44:27.054: E/AndroidRuntime(4417):     at android.app.ActivityThread.main(ActivityThread.java:3694)
07-08 20:44:27.054: E/AndroidRuntime(4417):     at java.lang.reflect.Method.invokeNative(Native Method)
07-08 20:44:27.054: E/AndroidRuntime(4417):     at java.lang.reflect.Method.invoke(Method.java:507)
07-08 20:44:27.054: E/AndroidRuntime(4417):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
07-08 20:44:27.054: E/AndroidRuntime(4417):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
07-08 20:44:27.054: E/AndroidRuntime(4417):     at dalvik.system.NativeStart.main(Native Method)

如果我使用字符串(例如“ cats”)調用cEditTextsetText方法,則它將起作用。

有任何想法嗎?

問題很容易:您試圖將int設置為Text而不是String。 因此,android執行以下方法: http : //developer.android.com/reference/android/widget/TextView.html#setText( int 這意味着,它將搜索具有給定id的String資源,但不會不存在。

您應該這樣設置文本:

int len = (140 - s.length());
cEditText.setText(String.valueOf(len));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM