安卓 onClick 方法

10

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

我还有另一个 onClick 方法,在其中我需要直接调用该方法。

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


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

                                                 }
    });

有没有解决方案?


3
我建议您遵循benvd的建议,但仍然为了达到目的,在侦听器中使用clr.performClick() - st0le
4个回答

15
你想从第二个 onClick 调用第一个 onClick 吗?只需将第一个 onClick 的内容提取到一个单独的方法中,并从每个 onClick 中调用该方法即可。
编辑:根据 st0le 的评论,您可以通过调用 clr.performClick() 来实现您想要的效果。(我不知道这一点。)尽管如此,将其提取到一个单独的方法中似乎更清晰易懂。

13

您可以在 XML 文件中执行以下操作:

你可以像这样在 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_function 放置在两个 "onClick" 中


1
(View view) 函数参数是一个要注意的地方。谢谢! - Joshua Pinter

9
你应该采用我一直以来使用的最简单方法,如下所示:
@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;
              }

    }
};

一个按钮的建议是在每个情况下都加上break。这样会使它更高效。 - Chief Madog

2
我建议如果两个按钮确实需要执行相同的操作,则使用相同的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); 访问监听器方法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接