Диалог ввода текста

Когда пользователь нажимает Button в моем приложении (которая печатается в SurfaceView ), я бы хотел, чтобы отображался текстовый Dialog и я хотел бы сохранить результат в String . Я хочу, чтобы текст Dialog накладывал текущий экран. Как я могу это сделать?

    Звучит как хорошая возможность использовать AlertDialog .

    Насколько это возможно, Android не имеет встроенного диалога для этого (насколько я знаю). К счастью, это всего лишь небольшая дополнительная работа над созданием стандартного AlertDialog. Вам просто нужно создать EditText для ввода пользователем данных и установить его как вид AlertDialog. Вы можете настроить тип ввода, разрешенный с помощью setInputType , если вам нужно.

    Если вы можете использовать переменную-член, вы можете просто установить переменную в значение EditText, и она будет сохраняться после отклонения диалога. Если вы не можете использовать переменную-член, вам может понадобиться прослушиватель, чтобы отправить строковое значение в нужное место. (Я могу редактировать и уточнять больше, если это то, что вам нужно).

    В вашем classе:

     private String m_Text = ""; 

    Внутри OnClickListener вашей кнопки (или в функции, вызываемой оттуда):

     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(); 

    Я обновлю обновление @Aaron с помощью подхода, который предоставит вам возможность лучше стилизовать диалог. Вот отрегулированный пример:

     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.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); m_Text = input.getText().toString(); } }); builder.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); builder.show(); 

    Вот пример макета, который использовался для создания диалога EditText:

           

    Здесь вы можете найти результат:

    Пример диалога EditText

    Как насчет этого ПРИМЕР ? Это кажется простым.

     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) { String url = txtUrl.getText().toString(); moustachify(null, url); } }) .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { } }) .show(); 
    Interesting Posts
    Давайте будем гением компьютера.