Boîte de dialog de saisie de texte Android

Lorsqu’un utilisateur clique sur un Button de mon application (qui est imprimé dans un SurfaceView ), j’aimerais qu’un Dialog s’affiche et que je souhaite enregistrer le résultat dans une Ssortingng . Je voudrais que la Dialog de Dialog du texte superpose l’écran actuel. Comment puis-je faire ceci?

Cela semble être une bonne occasion d’utiliser un AlertDialog .

Aussi simple que cela puisse paraître, Android n’a pas de boîte de dialog intégrée (pour autant que je sache). Heureusement, c’est juste un petit travail supplémentaire en plus de créer un AlertDialog standard. Vous devez simplement créer un EditText pour que l’utilisateur puisse saisir des données et le définir comme vue de 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 le rejet de la boîte de dialog. 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).

Dans votre classe:

 private Ssortingng 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().toSsortingng(); } }); builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); builder.show(); 

Je vais mettre à jour @Aaron Update avec une approche qui vous permettra de mieux définir le dialog. Voici un exemple ajusté:

 AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); builder.setTitle("Title"); // I'm using fragment here so I'm using getView() to provide ViewGroup // but you can provide here any other instance of ViewGroup from your Fragment / Activity View viewInflated = LayoutInflater.from(getContext()).inflate(R.layout.text_inpu_password, (ViewGroup) getView(), false); // Set up the input final EditText input = (EditText) viewInflated.findViewById(R.id.input); // Specify the type of input expected; this, for example, sets the input as a password, and will mask the text builder.setView(viewInflated); // Set up the buttons builder.setPositiveButton(android.R.ssortingng.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); m_Text = input.getText().toSsortingng(); } }); builder.setNegativeButton(android.R.ssortingng.cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); builder.show(); 

Voici l’exemple de la présentation utilisée pour créer la boîte de dialog EditText:

       

Ici vous pouvez trouver le résultat:

EditText Exemple de dialogue

Qu’en est-il de cet exemple ? Cela semble simple.

 final EditText txtUrl = new EditText(this); // Set the default text to a link of the Queen txtUrl.setHint("http://www.librarising.com/astrology/celebs/images2/QR/queenelizabethii.jpg"); new AlertDialog.Builder(this) .setTitle("Moustachify Link") .setMessage("Paste in the link of an image to moustachify!") .setView(txtUrl) .setPositiveButton("Moustachify", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { Ssortingng url = txtUrl.getText().toSsortingng(); moustachify(null, url); } }) .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { } }) .show();