10

が空の場合EditText、ログインButtonを無効にする必要があります。いくつかのテキストがある場合EditTextは、ログインButtonを有効にする必要があります。この方法は、Instagram ログインで確認できます。

両方のフィールドが空です。サインインButtonは無効です。

ここに画像の説明を入力

ここではパスワード フィールドが空であるため、サインインButtonは無効のままです。

ここに画像の説明を入力

ここでは、ユーザー名とパスワードの両方のフィールドが空ではないため、サインインButtonは有効になっています。

ここに画像の説明を入力

これらのステップを達成する方法?? ここに私のコードがあり、動作しません..

EditText et1,et2;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login_check);
    et1 = (EditText) findViewById(R.id.editText1);
    et2 = (EditText) findViewById(R.id.editText2);
    Button b = (Button) findViewById(R.id.button1);

    String s1 = et1.getText().toString();
    String s2 = et2.getText().toString();

    if(s1.equals("")|| s2.equals("")){
        b.setEnabled(false);
    } else {
        b.setEnabled(true);
    }
}
4

9 に答える 9

33

あなたが探しているものはここにあります:

private EditText et1,et2;
//  create a textWatcher member
private TextWatcher mTextWatcher = new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) {
    }

    @Override
    public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) {
    }

    @Override
    public void afterTextChanged(Editable editable) {
        // check Fields For Empty Values
        checkFieldsForEmptyValues();
    }
};

void checkFieldsForEmptyValues(){
    Button b = (Button) findViewById(R.id.button1);

    String s1 = et1.getText().toString();
    String s2 = et2.getText().toString();

    if(s1.equals("")|| s2.equals("")){
        b.setEnabled(false);
    } else {
        b.setEnabled(true);
    }
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login_check);
    et1 = (EditText) findViewById(R.id.editText1);
    et2 = (EditText) findViewById(R.id.editText2);


    // set listeners
    et1.addTextChangedListener(mTextWatcher);
    et2.addTextChangedListener(mTextWatcher);

    // run once to disable if empty
    checkFieldsForEmptyValues(); 
}
于 2013-02-21T13:23:12.350 に答える
5

結果を得るには、 TextWatcherを実装する必要がありますEditText

EditText et1, et2;
Button b;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    et1 = (EditText) findViewById(R.id.editText1);
    et2 = (EditText) findViewById(R.id.editText2);
    b = (Button) findViewById(R.id.button1);

    checkValidation();

    et1.addTextChangedListener(mWatcher);
    et2.addTextChangedListener(mWatcher);
}

private void checkValidation() {
    // TODO Auto-generated method stub

    if ((TextUtils.isEmpty(et1.getText()))
            || (TextUtils.isEmpty(et2.getText())))
        b.setEnabled(false);
    else
        b.setEnabled(true);

}

TextWatcher mWatcher = new TextWatcher() {

    @Override
    public void onTextChanged(CharSequence s, int start, int before,
            int count) {
        // TODO Auto-generated method stub
        checkValidation();
    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count,
            int after) {
        // TODO Auto-generated method stub

    }

    @Override
    public void afterTextChanged(Editable s) {
        // TODO Auto-generated method stub

    }
};
于 2013-02-21T13:11:20.250 に答える
3

オブジェクトEditTextを使用して内部でユーザーのアクションを追跡する必要があります。TextWatcher

myEditText.addTextChangedListener(new TextWatcher()
        {

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

            }

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after)
            {

            }

            @Override
            public void afterTextChanged(Editable s)
            {
                if (s.length() > 1)
                {
                    //enable button
                } else
                    //disable
            }
        });
于 2013-02-21T13:11:48.013 に答える
2

これを試して:

EditText et1,et2;
Button b;

@Override
protected void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_login_check);
  et1 = (EditText) findViewById(R.id.editText1);
  et2 = (EditText) findViewById(R.id.editText2);
  b = (Button) findViewById(R.id.button1);


  et1.addTextChangedListener(new TextWatcher() {

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

                            String s1 = et1.getText().toString();
                            String s2 = et2.getText().toString();

                             if(s1.equals("") && s2.equals("")){
                                   b.setEnabled(false);
                            } 
                            else if(!s1.equals("")&&s2.equals("")){
                                   b.setEnabled(false);
                            }
                            else if(!s2.equals("")&&s1.equals(""){
                                   b.setEnabled(false);
                            }
                            else {
                            b.setEnabled(true);
                          }

        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub

        }

        @Override
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub

        }
    });
  et2.addTextChangedListener(new TextWatcher() {

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

                            String s1 = et1.getText().toString();
                            String s2 = et2.getText().toString();

                            if(s1.equals("") && s2.equals("")){
                                   b.setEnabled(false);
                            } 
                            else if(!s1.equals("")&&s2.equals("")){
                                   b.setEnabled(false);
                            }
                            else if(!s2.equals("")&&s1.equals(""){
                                   b.setEnabled(false);
                            }
                            else {
                            b.setEnabled(true);
                          }

        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub

        }

        @Override
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub

        }
    });

}
于 2013-02-21T13:14:45.283 に答える
2

EditText フィールドのいずれかのテキストが変更されるたびに呼び出される TextWatcher をアタッチする必要があります。

private EditText mName;
private EditText mPassword;
private Button mButton;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_login_check);
    mName = (EditText) findViewById(R.id.editText1);
    mPassword = (EditText) findViewById(R.id.editText2);
    mButton = (Button) findViewById(R.id.button1);

    mName.addTextChangedListener(mWatcher);
    mPassword.addTextChangedListener(mWatcher);
}

private TextWatcher mWatcher = new TextWatcher() {
    @Override
    public void afterTextChanged(Editable s) {
        boolean nameNotEmpty = mName.getText().length()>0;
        boolean pwNotEmpty = mPassword.getText().length()>0;
        mButton.setEnabled(nameNotEmpty && pwNotEmpty);
    }
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {}
};
于 2013-02-21T13:26:19.443 に答える
1
private TextWatcher mPhoneNumberEtWatcher = new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {}

    @Override
    public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
        if (charSequence.length() >= 10) {
            mPhoneImg.setImageDrawable(getResources().getDrawable(R.drawable.phone_activate));

            if (mPasswordEt.getText().toString().length() >= 5) {
                mLoginBtn.setEnabled(true);
            }

        } else {
            mPhoneImg.setImageDrawable(getResources().getDrawable(R.drawable.phone));
            mLoginBtn.setEnabled(false);
        }
    }

    @Override
    public void afterTextChanged(Editable editable) {
    }
};

mPhoneNumberEt.addTextChangedListener(mPhoneNumberEtWatcher);

TextWatcher を使用する必要があります。ユーザーの入力後にメソッドが呼び出されます。また、編集テキストの長さなどを確認できます。

于 2013-02-21T13:13:40.113 に答える
0

これを試して

  if(s1.equals("") && s2.equals(""))
    {
        b.setEnabled(true);
        // to change color of the button you need to apply style to the button[here refer custom bg][1]
    }
    else
    {
        b.setEnabled(false);
       //do nothing or display toast msg
    }
于 2013-02-21T13:12:11.550 に答える
0

がパスワード(または類似のもの)であり、テキストの長さを証明する機能(他の回答を参照)が呼び出された 場合、チェックは機能しないことを追加したいだけですInputTypeEditText

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

したがって、チェックを呼び出すことが重要です

@Override 
public void afterTextChanged(Editable s) {...}
于 2015-02-27T02:19:49.127 に答える