2015-01-22 2 views
0

Я учусь разрабатывать на андроиде на студии 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

+0

Вы можете создать общую функцию, которая принимает управление в качестве аргумента и просто положить, что в ваших 'на * слушателей действий'. В каждом слушателе для конкретного элемента управления вы можете получить объект управления и передать его функции, минимизируя повторное вклеивание дублированного кода. –

+0

Вот что аргумент 'view' для – ElefantPhace

ответ

Смежные вопросы