Проблема с getId()
Есть поле ввода и 2 кнопки. ок и выйти. При нажатии на кнопку вылетает сразу "Упс, ошибка". В чем дело? У чувака на видосе работает замечательно.
public class MainActivity extends AppCompatActivity {
EditText mEditText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mEditText = (EditText) findViewById(R.id.userName);
}
public void onClick(View view) {
if (mEditText.getId() == R.id.okButton){
String txt = mEditText.getText().toString().trim();
//из объекта получаем текст и преобр его в стринг. trim == убрать лишние пробелы.
//далее проверяем длинну текста, есть ли там вообще что-то
if (txt.length() > 0){
Toast.makeText(this, "Hello, " + txt, Toast.LENGTH_LONG).show();
}
mEditText.setText(null); // очищаем поле ввода после вывода текста.
}
else if(mEditText.getId() == R.id.cancelButton){
mEditText.setText(null); // очищаем поле ввода.
}
else{
Toast.makeText(this, "Упс, что-то пошло не так", Toast.LENGTH_LONG).show();
}
/*switch (mEditText.getId()){ //проверяем id, id присвоит уникальный студия.
case R.id.okButton:
String txt = mEditText.getText().toString().trim();
//из объекта получаем текст и преобр его в стринг. trim == убрать лишние пробелы.
//далее проверяем длинну текста, есть ли там вообще что-то
if (txt.length() > 0){
Toast.makeText(this, "Hello, " + txt, Toast.LENGTH_LONG).show();
}
mEditText.setText(null); // очищаем поле ввода после вывода текста.
break;
case R.id.cancelButton:
mEditText.setText(null); // очищаем поле ввода.
break;
default:
Toast.makeText(this, "Упс, что-то пошло не так", Toast.LENGTH_LONG).show();
}*/
}
}
Ответы (1 шт):
Автор решения: woesss
→ Ссылка
Потому что вы сравниваете id поля ввода с айдишниками кнопок:
if (mEditText.getId() == R.id.okButton)
Тогда как вам нужно определить по какой кнопке кликнули.
Для этого нужно сравнить id вью, которая прилетела параметром метода onClick:
if (view.getId() == R.id.okButton)