web-dev-qa-db-ja.com

Android onClickメソッド

Androidプロジェクトに2つの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---

                                                 }
    });

これに対する解決策はありますか?

10
bindal

2番目から最初のonClickを呼び出しますか?別のメソッドで最初のonClickのコンテンツを抽出し、各onClickからそのメソッドを呼び出すだけです。

編集:st0leのコメントに従って、clr.performClick()を呼び出すことにより、必要な操作を実行できます。 (それは知りませんでした。)それでも、それを別のメソッドに抽出する方がきれいに見えます。

15
benvd

あなたは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"に配置します

11
Ibraheem Saoud

あなたは私が常に以下のように行う最も簡単な方法を使用するようにすべきです:

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

    }
};
8

両方のボタンが実際に同じことをする必要がある場合は、両方のボタンに同じ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);によってリスナーメソッドにアクセスできます。手動で.

2
Simon Heinen