Android onClick方法

bin*_*dal 10 android onclick button

我在android项目中有两个onclick方法

    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;
}
    });
Run Code Online (Sandbox Code Playgroud)

我有onClick方法,我必须直接调用该方法

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


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

                                                 }
    });
Run Code Online (Sandbox Code Playgroud)

这有什么解决方案吗?

ben*_*nvd 15

你想onClick从第二个打电话给第一个?只需在单独的方法中提取第一个onClick的内容,然后从每个方法中调用该方法onClick.

编辑:根据st0le的评论,你可以通过调用做你想做的事clr.performClick().(不知道.)尽管如此,将其提取到一个单独的方法似乎更清晰.


小智 11

你可以在XML文件中做这样的事情

<Button
 android:layout_height="wrap_content"
 android:layout_width="wrap_content"
 android:onClick="some_function" />
Run Code Online (Sandbox Code Playgroud)

并将此函数放在Java文件中

public void some_function(View view) {
 // stuff...
}
Run Code Online (Sandbox Code Playgroud)

并将some_function放在"onClick"中


Ngu*_*inh 8

您应该转而使用我最常用的最简单的方法,如下所示:

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

    }
};
Run Code Online (Sandbox Code Playgroud)