Cela ressemble à une bonne occasion d'utiliser un AlertDialog .
Aussi basique que cela puisse paraître, Android n'a pas de boîte de dialogue intégrée pour ce faire (pour autant que je sache). Heureusement, c'est juste un peu de travail supplémentaire en plus de créer un AlertDialog standard. Il vous suffit de créer un EditText pour que l'utilisateur puisse saisir des données et de le définir comme la vue du AlertDialog. Vous pouvez personnaliser le type d'entrée autorisé à l'aide de setInputType , si vous en avez besoin.
Si vous pouvez utiliser une variable membre, vous pouvez simplement définir la variable sur la valeur de EditText, et elle persistera après la fermeture de la boîte de dialogue. Si vous ne pouvez pas utiliser une variable membre, vous devrez peut-être utiliser un écouteur pour envoyer la valeur de chaîne au bon endroit. (Je peux éditer et élaborer plus si c'est ce dont vous avez besoin).
Au sein de votre classe:
private String m_Text = "";
Dans le OnClickListener de votre bouton (ou dans une fonction appelée à partir de là):
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Title");
// Set up the input
final EditText input = new EditText(this);
// Specify the type of input expected; this, for example, sets the input as a password, and will mask the text
input.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
builder.setView(input);
// Set up the buttons
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
m_Text = input.getText().toString();
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
builder.show();
global Context, Context cont;
puis de remplacer "this" dans alertdialog parcont
. Builder AlertDialog.Builder = nouveau AlertDialog.Builder (suite); entrée EditText finale = nouveau EditText (suite);J'ajouterai à la réponse de @ Aaron avec une approche qui vous donne la possibilité de mieux styliser la boîte de dialogue. Voici un exemple ajusté:
Voici l'exemple de disposition utilisé pour créer la boîte de dialogue EditText:
Le résultat final:
la source
getView()
parfindViewById(android.R.id.content)
et tout a fonctionné comme un charme. Merci beaucoup pour le partage :)(ViewGroup)
!@dimen/content_padding_normal
?Que diriez-vous de cet EXEMPLE ? Cela semble simple.
la source
Si vous voulez un peu d' espace à
left
etright
deinput
vue, vous pouvez ajouter un peu de rembourrage commedimens.xml
J'espère que ça aide
la source
resources
?Je l'ai trouvé plus propre et plus réutilisable à étendre
AlertDialog.Builder
pour créer une classe de dialogue personnalisée. Il s'agit d'une boîte de dialogue qui demande à l'utilisateur de saisir un numéro de téléphone. Un numéro de téléphone prédéfini peut également être fourni en appelantsetNumber()
avant d'appelershow()
.InputSenderDialog.java
dialog_input_sender_number.xml
Usage:
la source
@LukeTaylor: J'ai actuellement la même tâche à accomplir (créer une fenêtre contextuelle / boîte de dialogue contenant un EditText).
Personnellement, je trouve que la route entièrement dynamique est quelque peu limitative en termes de créativité.
DISPOSITION DE DIALOGUE ENTIÈREMENT PERSONNALISÉE:
Plutôt que de compter entièrement sur le code pour créer la boîte de dialogue, vous pouvez le personnaliser entièrement comme ceci:
1) - Créez un nouveau
Layout Resource
fichier .. Cela agira comme votre boîte de dialogue, permettant une liberté de création totale!REMARQUE: Référez-vous aux directives de conception des matériaux pour aider à garder les choses propres et précises.
2) - Donnez des identifiants à tous vos
View
éléments. Dans mon exemple de code ci-dessous, j'ai 1EditText
et 2Buttons
.3) - Créez un
Activity
avec unButton
, à des fins de test .. Nous allons le faire gonfler et lancer votre boîte de dialogue!Part de gâteau! Pleine liberté créative! Assurez-vous simplement de suivre les directives sur le matériel;)
J'espère que cela aide quelqu'un! Dites-moi ce que vous en pensez!
la source
C'est du travail pour moi
Comment appeler? (Nom de l'activité actuelle)
showForgotDialog (current_activity_name.this);
la source