Я учусь разрабатывать на андроиде на студии Android, и я столкнулся с проблемой.Множество слушателей одного метода
У меня есть несколько элементов управления EditText для информации о пользователе: имя, фамилия, адрес, и я хочу, чтобы они вели себя одинаково, когда они находятся в фокусе и не в фокусе.
Например, мой электронный элемент управления EditText имеет адрес электронной почты как его текстовое свойство. Когда пользователь нажимает «Адрес электронной почты», исчезает, и если пользователь не добавляет ввода и оставляет элемент управления «Адрес электронной почты». Это то, что делает этот метод:
private string emailAddress = "Email Address";
public void onFocusChange(View view, boolean focus)
{
(EditText) email = (EditText) findViewById(R.id.emailInput);
if(!focus && (email.getText()).equals(""))
{
email.setText(emailAddress);
}
else if(focus && (email.getText()).equals(emailAddress))
{
email.setText("");
}
}
У меня как 20 управления, и я не хочу, чтобы скопировать и вставить тот же код и изменить переменные.
У меня есть два вопроса: Могу ли я получить идентификатор элемента управления, который вызывает метод onFocusChange поэтому первая линия становится ->
(EditText) ctrl = (EditText) findViewById(R.id.(this.getId());
и я могу добавить новое свойство «исходный текст» для управления EditText так что я могу получить что-то вроде этого ->
if(!focus && (ctrl.getText()).equals(""))
{
ctrl.setText(ctrl.getInitialText());
}
else if(focus && (ctrl.getText()).equals(ctrl.getInitialText()))
{
ctrl.setText("");
}
EDIT: Это вроде как создать свой собственный элемент управления, который наследуется от класса EditText. Я просто добавляю объектную переменную (Initial Text) и метод (getInitialText). Могу ли я создать свой собственный элемент управления таким образом и все еще иметь функцию перетаскивания в андроид-студии?
Спасибо! : D
Вы можете создать общую функцию, которая принимает управление в качестве аргумента и просто положить, что в ваших 'на * слушателей действий'. В каждом слушателе для конкретного элемента управления вы можете получить объект управления и передать его функции, минимизируя повторное вклеивание дублированного кода. –
Вот что аргумент 'view' для – ElefantPhace