metodo

2010-09-17 7 views
7

ho due metodo onclick nel progetto Androidmetodo

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

e devo onther metodo onClick in cui devo chiamare quel metodo direttamente

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


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

               } 
    }); 

Android onClick C'è qualche soluzione per questo?

+3

Ti suggerisco di seguire il suggerimento 'benvd', ma ancora per il gusto di farlo, usa' clr.performClick() 'nel Listener. – st0le

risposta

14

Vuoi chiamare il primo onClick dal secondo? Basta estrarre il contenuto del tuo primo onClick in un metodo separato e chiamare quel metodo da ogni onClick.

Modifica: come da commento di st0le, è possibile eseguire ciò che si desidera chiamando clr.performClick(). (Non lo sapevo.) Tuttavia, estraendolo in un metodo separato sembra più pulito.

1

mi sento di raccomandare di utilizzare lo stesso OnClickListener per entrambi i tasti se entrambi i pulsanti hanno veramente a fare la stessa cosa:

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 se il suo non è esattamente lo stesso si poteva accedere al metodo ascoltatore l.onClick (nullo); manualmente ..

7

Si dovrebbe girare per usare il modo più semplice che faccio sempre, come di seguito:

@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

un suggerimento di pulsante sarebbe quello di rompere ogni caso. ciò renderebbe più efficiente. –

5

si può fare qualcosa di simile nel file XML

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

e inserisci questa funzione nel file Java

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

e metti la funzione some_function in entrambi "onClick".

+0

Il parametro di funzione '(Visualizza vista)' è il gotcha. Grazie! –