Вам необходимо добавить оператор break
для case R.id.btn_yes
.В соответствии с docs :
операторы break необходимы, потому что без них операторы в блоках переключателей сбиваются: все операторы после совпадающей метки регистра выполняются последовательно, независимо отВыражение последующих меток регистра до тех пор, пока не встретится оператор break
В вашей ситуации нажимается кнопка с идентификатором btn_yes
, затем выполняется либо блок кода в if
, либо else
Поток программы продолжает выполнение кода в case R.id.btn_no
, потому что он не был остановлен с разрывом в соответствующем случае.
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_yes:
if ((!TextUtils.isEmpty(newpass.getText().toString())) && oldpass.getText().toString().equals(Login_Activity.e.getPassword())) {
Login_Activity.e.password=newpass.getText().toString();
user.child(Login_Activity.e.getId()).setValue(Login_Activity.e);
dismiss();
} else {
yes.setBackgroundResource(R.color.red);
}
break; // add this
case R.id.btn_no:
dismiss();
break;
}
}