334

Buttonユーザーが私のアプリで をクリックすると (これは に出力されますSurfaceView)、テキストDialogが表示され、結果を に保存したいと思いますStringDialogテキストを現在の画面に重ねて表示したいと思います。これどうやってするの?

4

7 に答える 7

642

AlertDialogを使用する良い機会のように思えます。

基本的なように見えますが、Android にはこれを行うための組み込みのダイアログがありません (私の知る限り)。幸いなことに、これは標準の AlertDialog の作成に加えて、少し余分な作業を行うだけです。ユーザーがデータを入力するための EditText を作成し、それを AlertDialog のビューとして設定するだけです。必要に応じて、 setInputTypeを使用して許可される入力のタイプをカスタマイズできます。

メンバー変数を使用できる場合は、変数を EditText の値に設定するだけで、ダイアログが閉じた後も保持されます。メンバー変数を使用できない場合は、リスナーを使用して文字列値を適切な場所に送信する必要がある場合があります。(これが必要な場合は、編集してさらに詳しく説明できます)。

クラス内:

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();
于 2012-06-05T20:45:40.660 に答える
70

このはどうですか?それは簡単に思えます。

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(); 
于 2012-06-05T20:25:20.900 に答える