Rejeter AlertDialog.Générateur de OnClick
Que j'essaie de faire en sorte que d'une boîte de dialogue s'affiche pour les utilisateurs qui dispose de deux boutons dans le corps et un bouton annuler en bas. Lorsqu'un utilisateur clique sur un des deux boutons de la boîte de dialogue disparaîtra, et appuyer sur cancel (annuler tout simplement annuler de la boîte de dialogue. Le annuler une partie fonctionne bien, mais je n'arrive pas à comprendre comment faire pour faire disparaître la boîte de dialogue manuellement. Voici mon code:
public void onItemClick(AdapterView<?> parent, View view,
final int position, long id) {
Context mContext = getApplicationContext();
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.config_dialog,
(ViewGroup) findViewById(R.id.config_dialog));
Button connect = (Button) layout.findViewById(R.id.config_connect);
Button delete = (Button) layout.findViewById(R.id.config_delete);
alert = new AlertDialog.Builder(Configuration.this);
alert.setTitle("Profile");
connect.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
trace("Connect" + Integer.toString(position));
toast("Connected");
SharedPreferences app_preferences =
PreferenceManager.getDefaultSharedPreferences(Configuration.this);
SharedPreferences.Editor editor = app_preferences.edit();
editor.putString("IP", fetch.get(position).IP);
editor.commit();
//Add dismiss here
}
});
delete.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
trace("Delete");
}
});
//Set layout
alert.setView(layout);
alert.setNegativeButton("Close", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
//Canceled.
}
});
alert.show();
Lorsque j'essaie d'ajouter l'alerte.rejeter(), Eclipse me donne une erreur. .rejeter() ne s'affiche pas dans d'alerte de la liste de saisie semi-automatique.
OriginalL'auteur trevor-e | 2011-07-26
Vous devez vous connecter pour publier un commentaire.
AlertDialog.Builder
est le mieux adapté pour les petits des boîtes de dialogue simples plutôt que des boîtes de dialogue personnalisées.La façon la plus propre de la poignée de boîtes de dialogue personnalisées est à la sous-classe
AlertDialog
en tant que private static de la classe dans votre contexte (dans ce cas, votre activité).Voici un exemple simplifié:
OriginalL'auteur Merlin
Merlin réponse est bonne et devrait être accepté, mais par souci d'exhaustivité, je vais poster une alternative.
Le problème, c'est que vous essayez de rejeter une instance de AlertDialog.Place le générateur de AlertDialog. C'est pourquoi, l'Éclipse ne sera pas auto-valider la méthode pour vous. Une fois que vous appelez create() sur l'AlertDialog.Builder, vous pouvez fermer la AlertDialog que vous recevez en tant que résultat.
Quand êtes-vous en faveur
alert.show()
? Est-il après l'appel dealertBuilder.create()
? Quelle erreur avez-vous?J'ai remplacé
alert = alertBuilder.create();
avecalert = alertBuilder.show();
et le rejeter travaillé. créer() semble redondant pour moialert.dismiss()
a fait le tour, merci 🙂OriginalL'auteur theisenp
Le code est très simple:
enfin dans l'action de bouton par exemple:
Par exemple avec un alertdialog:
Code java, vous pouvez créer un Objet AlertDialog:
Exemple de Code XML: layout_test.xml
enfin, l'appel à l'Activité:
OriginalL'auteur Alex Zaraos
Il n'y a pas besoin de créer une classe personnalisée. Il suffit de créer une référence externe à votre boîte de Dialogue et l'utiliser pour afficher/rejeter.
Voici un exemple où j'utilise Builder pour créer un Dialogue personnalisé avec de nombreux boutons:
Le déclarer à l'intérieur de vous classe:
Dans votre onCreate(), définie lorsque vous voulez que votre boîte de Dialogue. Dans mon cas, j'ai un bouton:
Et voici à quoi il ressemble:
OriginalL'auteur Teo Inke