Android setOnClickListener méthode-comment ça marche?
J'ai du mal à comprendre ce code. Je reçois que findViewById
obtiendra le widget button et ensuite il le lancera. Ensuite, il va utiliser le bouton pour appeler la méthode setOnClickListener
. Cependant, je ne sais pas quel est cet argument passé dans le setOnClickListener
et je n'ai jamais vu de code comme ça auparavant. Comment est-ce qu'il crée un nouvel objet mais est capable de créer une méthode propre dans l'argument d'une autre méthode? Ce serait génial si quelqu'un pouvait expliquer cela. En outre, quel type d'objet est le setOnClickListener
méthode prenant en?
btn = (Button)findViewById(R.id.firstButton);
btn.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
tv.setText(months[rand.nextInt(12)]);
tv.setTextColor(Color.rgb(rand.nextInt(255)+1, rand.nextInt(255)+1, rand.nextInt(255)+1));
}
});
3 réponses
Ça marche comme ça. Vue.OnClickListenere est défini -
public interface OnClickListener {
void onClick(View v);
}
Pour autant que nous sachions, vous ne pouvez pas instancier un objet OnClickListener
, car il n'a pas de méthode implémentée. Il y a donc deux façons de procéder : vous pouvez implémenter cette interface qui remplacera la méthode onClick
comme ceci:
public class MyListener implements View.OnClickListener {
@Override
public void onClick (View v) {
// your code here;
}
}
Mais il est fastidieux de le faire à chaque fois que vous voulez définir un écouteur de clic. Donc, pour éviter cela, vous pouvez fournir l'implémentation de la méthode sur place, tout comme dans un exemple vous donner.
setOnClickListener
prend View.OnClickListener
comme paramètre.
C'est la meilleure façon d'implémenter Onclicklistener pour de nombreux boutons d'affilée mettre en œuvre la Vue.onclicklistener.
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
Ceci est un bouton dans le MainActivity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt_submit = (Button) findViewById(R.id.submit);
bt_submit.setOnClickListener(this);
}
C'est une méthode de remplacement
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.submit:
//action
break;
case R.id.secondbutton:
//action
break;
}
}
Que ce manuel dit à propos de la méthode setOnClickListener
est:
public void setOnClickListener (View.OnClickListener l)
Ajouté au niveau 1 de L'API, enregistrez un rappel à appeler lorsque cette vue est cliqué. Si cette vue n'est pas cliquable, elle devient cliquable.
Les Paramètres
L Vue.OnClickListener: le rappel qui s'exécutera
Et normalement vous devez l'utiliser comme ceci
public class ExampleActivity extends Activity implements OnClickListener {
protected void onCreate(Bundle savedValues) {
...
Button button = (Button)findViewById(R.id.corky);
button.setOnClickListener(this);
}
// Implement the OnClickListener callback
public void onClick(View v) {
// do something when the button is clicked
}
...
}
Jetez un oeil à cette leçon ainsi construire une calculatrice Simple en utilisant Android Studio.