簡體   English   中英

Android中的onEditorAction

[英]onEditorAction in android

我的布局中有兩個EditTexts和一個Button

一個名為UserName的EditText,另一個稱為Password的按鈕,而Button稱為Login。

一開始按鈕被禁用

我想要的是,無論何時在EditText用戶名和密碼中輸入任何內容,都應啟用按鈕

這是我嘗試過的

@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event)
{
    if(!TextUtils.isEmpty(UserName.getText()) && !TextUtils.isEmpty(PassWord.getText()))
    {
        Login.setEnabled(true);
        return true;
    }

    return false;

當我運行此代碼時,“登錄按鈕”開始為禁用狀態,當我在兩個EditText中都輸入內容而不單擊“輸入”按鈕時,該按鈕保持禁用狀態

它僅在單擊“輸入”按鈕時有效

單擊鍵盤中的任何按鈕並且兩個EditText都不為空時,有沒有辦法使其工作

感謝幫助

當文本中的事件發生更改時,可以將TextChangedListener類用於EditTexts來偵聽事件。 在我的一個項目中,我有一個代碼:

private boolean heightFilled;
private boolean weightFilled;

private void setInputListeners() {
    etHeight.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            heightFilled = s.length() > 0;
            calculateButton.setEnabled(heightFilled && weightFilled);
        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });

    etWeight.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            weightFilled = s.length() > 0;
            calculateButton.setEnabled(heightFilled && weightFilled);
        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });
}

如果您更改ButtonEditText的名稱,則此方法應該起作用。

您需要使用文本更改的偵聽器。 從那里,您可以檢查是否鍵入,並且在檢查之后都具有用於激活按鈕的輸入代碼和呼叫代碼。

   editText.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

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

        }

        @Override
        public void afterTextChanged(Editable s) {
             //enter code here to check if your edittexts have content
             //then do stuff with your button

            }

        }
    });

暫無
暫無

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

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