2010-09-17 19 views
7

tengo dos método onclick en el proyecto androideAndroid onClick método

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

Y tengo onther método onClick en el que tengo que llamar a ese método directamente

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


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

               } 
    }); 

¿Hay alguna solución para esto?

+3

Sugiero que siga la sugerencia de 'benvd', pero aún por el bien, use' clr.performClick() 'en el Listener. – st0le

Respuesta

14

¿Desea llamar al primer onClick del segundo? Simplemente extraiga el contenido de su primer onClick en un método diferente y llame a ese método desde cada onClick.

Editar: Según el comentario del modelo, puede hacer lo que desee llamando al clr.performClick(). (No lo sabía). Aún así, extraerlo en un método separado parece más limpio.

1

yo recomendaría usar el mismo para los dos botones OnClickListener si ambos botones realmente tienen que hacer lo mismo:

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

o si no es exactamente la misma que podría acceder al método detector de l.onClick (nulo); manualmente ..

7

Usted debe dar vuelta a usar la forma más sencilla que siempre lo hago de la siguiente manera:

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

    } 
}; 
+0

una sugerencia de botón sería romper cada caso. eso lo haría mucho más eficiente. –

5

se puede hacer algo como esto en el archivo XML

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

y poner esta función en el archivo de Java

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

y ponga some_function en ambos "onClick" s

+0

El parámetro de función '(View view)' es el gotcha. ¡Gracias! –

Cuestiones relacionadas