Android onClick method

2019-01-24 10:10发布

I have two onclick method in android project

    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;
}
    });

And i have onther onClick method in which i have to call that method directly

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


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

                                                 }
    });

Is there Any Solution for this?

4条回答
Deceive 欺骗
2楼-- · 2019-01-24 10:39

You want to call the first onClick from the second? Just extract the contents of your first onClick in a separate method and call that method from each onClick.

Edit: As per st0le's comment, you can do what you want by calling clr.performClick(). (Didn't know that.) Still, extracting it into a separate method seems cleaner.

查看更多
祖国的老花朵
3楼-- · 2019-01-24 10:51

You should turn to use the simplest way that I always do as below:

@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;
              }

    }
};
查看更多
再贱就再见
4楼-- · 2019-01-24 10:54

I would recommend to use the same OnClickListener for both buttons if both buttons really have to do the same thing:

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);

or if its not exactly the same you could access the listener method by l.onClick(null); manually..

查看更多
家丑人穷心不美
5楼-- · 2019-01-24 11:05

you can do something like this in the XML file

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

and put this function in the Java file

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

and put the some_function in both "onClick"s

查看更多
登录 后发表回答