Cela devrait être simple, mais je ne sais pas trop où quelque chose ne va pas ... Je tente de saisir le clic sur la variable TextView
avec:
public void runNextTask(){
final View addView = getLayoutInflater().inflate(R.layout.addnewtracker, null);
final TrackerInfo newInfo = new TrackerInfo();
//set up for model selection
TextView modelTextview = (TextView)addView.findViewById(R.id.modelEdit)
modelTextview.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
Le XML pour la TextView
est:
<TextView
Android:id="@+id/model"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="@string/Tracker_model"
Android:clickable="true"
Android:onClick="onClick"/>
Mais lorsque je clique sur la variable TextView
, elle n’entre pas dans la méthode onClick()
. Qu'est-ce qui me manque?
Merci
Vous pouvez enlever ceci:
Android:onClick="onClick"
Ou supprimez ceci:
modelTextview.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
}
});
et avoir ceci:
public void onClick(View v)
{
// do something
}
Android:onClick="onClick"/>
// Il serait préférable de renommer la méthode pour éviter toute confusion
Aussi, vous avez ceci:
<TextView
Android:id="@+id/model" // id is model
donc initialisez votre TextView
comme ci-dessous:
TextView modelTextview = (TextView)addView.findViewById(R.id.model);
Cette ligne: Android:onClick="onClick"
indique à Android de rechercher dans l’activité une méthode portant cette signature:
public void onClick(View v)
Ce n’était pas votre intention, car vous avez défini OnClickListener dans votre code et n’avez pas créé la méthode qui lui est dédiée dans l’activité . Vous avez donc le choix entre supprimer simplement le Android:onClick="onClick"
de votre fichier xml ou le supprimer. l'écouteur sur le clic que vous avez créé et changez-le en une méthode onClick (et préférablement changez son nom en quelque chose de mieux que onClick ...
super.onCreate(savedInstanceState);
setContentView(R.layout.other_activity);
findViewById(R.id.TextView).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
}
});
Changement :
TextView modelTextview = (TextView)addView.findViewById(R.id.modelEdit);
à
TextView modelTextview = (TextView)addView.findViewById(R.id.model);
et il n'y a pas besoin de Android:onClick="onClick"
dans votre code xml si vous voulez le faire avec du code Java
Si vous changez votre code pour avoir cette structure, cela fonctionnera:
public void runNextTask(){
...
}
public void onClick(View v) {
}
lorsque vous indiquez dans votre code xml de capturer le clic pour l'affichage de texte (Android:onClick="onClick"
) dans le module onClick
, vous n'avez pas besoin d'ajouter un écouteur onClick dans votre code Java.
pour chaque composant de vue, nous pouvons appeler setOnclickLister () comme cela pour TextView appelle aussi
textview.setOnclickListener(new setOnclickListener
{
public void onclick()
{
}
}
);``