Android onClick метод - PullRequest
       25

Android onClick метод

9 голосов
/ 17 сентября 2010

У меня есть два метода onclick в проекте Android

    clr=(Button)findViewById(R.id.Button01);
    clr.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {

            tv1.setText("CLR");

            et1.setText("");
            refrigerant = "";
            pres = "";
            temperature = "";

            superheat_oda = 0;
            sub_cool = 0;
}
    });

И у меня есть другой метод onClick, в котором мне нужно вызвать этот метод напрямую

    prs=(Button)findViewById(R.id.Button02);
    prs.setOnClickListener(new OnClickListener() {


                     -----      I have to call that method---

                                                 }
    });

Есть ли какое-либо решение для этого

Ответы [ 4 ]

15 голосов
/ 17 сентября 2010

Вы хотите позвонить первому onClick со второго?Просто извлеките содержимое вашего первого onClick в отдельный метод и вызывайте этот метод из каждого onClick.

Редактировать: согласно комментарию st0le, вы можете делать то, что хотите, вызывая clr.performClick().(Не знал этого.) Тем не менее, извлечение его в отдельный метод выглядит чище.

10 голосов
/ 11 мая 2014

вы можете сделать что-то подобное в XML-файле

<Button
 android:layout_height="wrap_content"
 android:layout_width="wrap_content"
 android:onClick="some_function" />

и поместить эту функцию в файл Java

public void some_function(View view) {
 // stuff...
}

и поместить функцию some_ воба "onClick" s

7 голосов
/ 03 апреля 2012

Вы должны обратиться, чтобы использовать самый простой способ, который я всегда делаю, как показано ниже:

@Override
public void onCreate(Bundle savedInstanceState) {
        button1.setOnClickListener(onClickListener);
        button2.setOnClickListener(onClickListener);

}

private OnClickListener onClickListener = new OnClickListener() {

    @Override
    public void onClick(final View v) {
             switch(v.getId()){
                 case R.id.button1:
                      //DO something
                 break;
                 case R.id.button2:
                      //DO something
                 break;
              }

    }
};
2 голосов
/ 17 сентября 2010

Я бы рекомендовал использовать один и тот же OnClickListener для обеих кнопок, если обе кнопки действительно должны делать одно и то же:

OnClickListener l=new OnClickListener() {

    public void onClick(View v) {

        tv1.setText("CLR");

        et1.setText("");
        refrigerant = "";
        pres = "";
        temperature = "";

        superheat_oda = 0;
        sub_cool = 0;
    }
};
clr=(Button)findViewById(R.id.Button01);
clr.setOnClickListener(l);
prs=(Button)findViewById(R.id.Button02);
prs.setOnClickListener(l);

или если это не совсем то же самое, вы можете получить доступ к методу слушателя с помощью l.onClick (null); вручную ..

...