Je veux que le bouton1,2,3 répondre à un longclick, l'utilisateur sera invité à entrer le bouton du texte. A l'intérieur de onCreate je l'ai écrit:setonlongclicklistener pour plusieurs boutons à la fois
Button botonEditable;
Context context;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
context = MainActivity.this;
Resources r = getResources();
String pName = getPackageName();
for (int i=1;i<4;i++){
botonEditable = (Button) findViewById(r.getIdentifier("button" + i, "id", pName));
botonEditable.setOnLongClickListener(new View.OnLongClickListener() {
public boolean onLongClick(View v) {
final AlertDialog.Builder alert = new AlertDialog.Builder(context);
alert.setMessage("Nueva Categoria:");
final EditText input = new EditText(context);
alert.setView(input);
alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton ) {
// Do something with value!
String newCateg = input.getText().toString();
botonEditable.setText(newCateg);
}
});
alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
// Canceled.
}
});
alert.show();
return true;
}
});
}
}
Lorsque cela est testé, les 3 boutons répond en conséquence pour afficher un message d'alerte, mais quand j'entrer du texte et cliquez sur OK, le texte est modifié que dans button3, quelle que soit la bouton a été longclicked :( Qu'est-ce qui ne va pas et comment le fixer de manière simple?
Hors champ: Pourquoi Entreposez-vous une forte référence au contexte de l'activité? Je crois que c'est une mauvaise pratique, supprimez l'attribut ** Context context ** et utilisez ** this ** si nécessaire. – Leeeeeeelo