java– 使用清晰的edittext更好的方法

java– 使用清晰的edittext更好的方法,第1张

概述我只是想知道在AndroidJava中清除EditText有什么好处:editText.getText().clear();要么editText.setText("");效率或其他方面有什么显着差异吗?我看到一些关于清算的帖子,但没有人解释利弊.解决方法:看到不同:clear()vssetText()publicvoidclear(){replace(0

我只是想知道在Android Java中清除EditText有什么好处:

editText.getText().clear();

要么

editText.setText("");

效率或其他方面有什么显着差异吗?我看到一些关于清算的帖子,但没有人解释利弊.

解决方法:

看到不同:

clear() vs setText()

public voID clear() {    replace(0, length(), "", 0, 0);    mSpanInsertCount = 0;}

setText()方法重载:

public final voID setText(CharSequence text) {    setText(text, mBufferType);}

上面的setText(CharSequence文本)方法调用setText(CharSequence text,BufferType类型),它接受2个参数:

public voID setText(CharSequence text, BufferType type) {    setText(text, type, true, 0);    if (mCharWrapper != null) {        mCharWrapper.mChars = null;    }}

上面的setText(CharSequence文本,BufferType类型)方法调用setText(CharSequence文本,BufferType类型,boolean notifyBefore,int oldlen),它接受4个参数:

private voID setText(CharSequence text, BufferType type,                     boolean notifyBefore, int oldlen) {    if (text == null) {        text = "";    }    // If suggestions are not enabled, remove the suggestion spans from the text    if (!isSuggestionsEnabled()) {        text = removeSuggestionSpans(text);    }    if (!mUserSetTextScaleX) mTextPaint.setTextScaleX(1.0f);    if (text instanceof Spanned &&        ((Spanned) text).getSpanStart(TextUtils.TruncateAt.MARQUEE) >= 0) {        if (VIEwConfiguration.get(mContext).isFadingMarqueeEnabled()) {            setHorizontalFadingEdgeEnabled(true);            mMarqueeFadeMode = MARQUEE_FADE_norMAL;        } else {            setHorizontalFadingEdgeEnabled(false);            mMarqueeFadeMode = MARQUEE_FADE_SWITCH_SHOW_ELliPSIS;        }        setEllipsize(TextUtils.TruncateAt.MARQUEE);    }    int n = mFilters.length;    for (int i = 0; i < n; i++) {        CharSequence out = mFilters[i].filter(text, 0, text.length(), EMPTY_SPANNED, 0, 0);        if (out != null) {            text = out;        }    }    if (notifyBefore) {        if (mText != null) {            oldlen = mText.length();            sendBeforeTextChanged(mText, 0, oldlen, text.length());        } else {            sendBeforeTextChanged("", 0, 0, text.length());        }    }    boolean needEditableForNotification = false;    if (mListeners != null && mListeners.size() != 0) {        needEditableForNotification = true;    }    if (type == BufferType.EDItable || getKeyListener() != null ||            needEditableForNotification) {        createEditorIfNeeded();        mEditor.forgetUndoRedo();        Editable t = mEditableFactory.newEditable(text);        text = t;        setFilters(t, mFilters);        inputMethodManager imm = inputMethodManager.peekInstance();        if (imm != null) imm.restartinput(this);    } else if (type == BufferType.SPANNABLE || mMovement != null) {        text = mSpannableFactory.newSpannable(text);    } else if (!(text instanceof CharWrapper)) {        text = TextUtils.stringOrSpannedString(text);    }    if (mautolinkMask != 0) {        Spannable s2;        if (type == BufferType.EDItable || text instanceof Spannable) {            s2 = (Spannable) text;        } else {            s2 = mSpannableFactory.newSpannable(text);        }        if (linkify.addlinks(s2, mautolinkMask)) {            text = s2;            type = (type == BufferType.EDItable) ? BufferType.EDItable : BufferType.SPANNABLE;            /*             * We must go ahead and set the text before changing the             * movement method, because setMovementMethod() may call             * setText() again to try to upgrade the buffer type.             */            mText = text;            // Do not change the movement method for text that support text selection as it            // would prevent an arbitrary cursor displacement.            if (mlinksClickable && !textCanBeSelected()) {                setMovementMethod(linkMovementMethod.getInstance());            }        }    }    mBufferType = type;    mText = text;    if (mtransformation == null) {        mtransformed = text;    } else {        mtransformed = mtransformation.gettransformation(text, this);    }    final int textLength = text.length();    if (text instanceof Spannable && !mAllowtransformationLengthChange) {        Spannable sp = (Spannable) text;        // Remove any ChangeWatchers that might have come from other TextVIEws.        final ChangeWatcher[] watchers = sp.getSpans(0, sp.length(), ChangeWatcher.class);        final int count = watchers.length;        for (int i = 0; i < count; i++) {            sp.removeSpan(watchers[i]);        }        if (mChangeWatcher == null) mChangeWatcher = new ChangeWatcher();        sp.setSpan(mChangeWatcher, 0, textLength, Spanned.SPAN_INCLUSIVE_INCLUSIVE |                   (CHANGE_WATCHER_PRIORITY << Spanned.SPAN_PRIORITY_SHIFT));        if (mEditor != null) mEditor.addSpanWatchers(sp);        if (mtransformation != null) {            sp.setSpan(mtransformation, 0, textLength, Spanned.SPAN_INCLUSIVE_INCLUSIVE);        }        if (mMovement != null) {            mMovement.initialize(this, (Spannable) text);            /*             * Initializing the movement method will have set the             * selection, so reset mSelectionMoved to keep that from             * interfering with the normal on-focus selection-setting.             */            if (mEditor != null) mEditor.mSelectionMoved = false;        }    }    if (mLayout != null) {        checkForRelayout();    }    sendOnTextChanged(text, 0, oldlen, textLength);    onTextChanged(text, 0, oldlen, textLength);    notifyVIEwAccessibilityStateChangedIfNeeded(AccessibilityEvent.CONTENT_CHANGE_TYPE_TEXT);    if (needEditableForNotification) {        sendAfterTextChanged((Editable) text);    }    // SelectionModifIErCursorController depends on textCanBeSelected, which depends on text    if (mEditor != null) mEditor.prepareCursorControllers();}
总结

以上是内存溢出为你收集整理的java – 使用清晰的edittext更好的方法全部内容,希望文章能够帮你解决java – 使用清晰的edittext更好的方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1111396.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存