Текущая цель ClickListener - PullRequest
       5

Текущая цель ClickListener

1 голос
/ 05 февраля 2011
EditText etHomePhone = (EditText)findViewById(R.id.et_pi_home_phone);
EditText etMobilePhone = (EditText)findViewById(R.id.et_pi_home_phone);

etHomePhone.setOnClickListener(showPopUpClickListener);
etMobilePhone.setOnClickListener(showPopUpClickListener);


    private View.OnClickListener showPopUpClickListener = new View.OnClickListener() {

            public void onClick(View v) {

              /* I like to get both EditText.getText().toString() value in this one ClickListener 
 is it Possible, there is something in ActionScript call event.currentTarget...
*/  

            }
        };

Ответы [ 2 ]

0 голосов
/ 05 февраля 2011

Это фрагмент, поэтому я не вижу контекста, но вы можете структурировать один OnClickListener, чтобы перехватывать все события в вашей активности.Во-первых, вашей деятельности нужно будет реализовать интерфейс OnClickListener:

public class YourActivity extends Activity implements OnClickListener {...

В методе OnCreate () зарегистрируйте каждый элемент пользовательского интерфейса, который должен реагировать на нажатия, например:

yourObject.setOnClickListener(this);

Далеедля метода onClick () упражнения создайте структуру переключателя, используя R.id, например:

@Override
public void onClick(View view) {
   switch(view.getId()){
   case R.id.A_UI_Element:
      //do what you need for this element
      break:
   case R.id.A_Different_UI_Element:
      //do what you need for this element
      break;
   //continue with cases for each element you want to be clickable
   }
}

Не забывайте разрыв в конце каждого случая.

Одна вещьЯ заметил в вашем коде: оба объявления editText ссылаются на один и тот же ресурс.Это дает вам два дескриптора для одного и того же элемента пользовательского интерфейса, а не 2 разных элементов.

0 голосов
/ 05 февраля 2011

Если вы объявите переменные etHomePhone и etMobilePhone как окончательные и определите свой встроенный OnClickListener в том же методе, то вы можете напрямую обратиться к этим переменным.Вот так:

final EditText etHomePhone = (EditText)findViewById(R.id.et_pi_home_phone);
final EditText etMobilePhone = (EditText)findViewById(R.id.et_pi_home_phone);

View.OnClickListener showPopUpClickListener = new View.OnClickListener() {

    public void onClick(View v) {
        String home = etHomePhone.getText().toString();
        String mobile = etMobilePhone.getText().toString();
        // Do something with home and mobile
    }
};

etHomePhone.setOnClickListener(showPopUpClickListener);
etMobilePhone.setOnClickListener(showPopUpClickListener);

РЕДАКТИРОВАТЬ:

Если вы хотите получить только текст для EditText, по которому щелкнули, а не оба из них, то вы можете просто привести представление, которое он доставилчерез onClick (Просмотр v):

public void onClick(View v) {
    EditText editText = (EditText)v;
    String phoneNumber = editText.getText().toString();
    // Do something with phoneNumber
}
...