ユーザーがButton
アプリの ( に印刷されますSurfaceView
)をクリックすると、テキストDialog
が表示され、その結果が に保存されるようにしたいと思いますString
。テキストをDialog
現在の画面にオーバーレイしたいと思います。どうすればいいでしょうか?
ベストアンサー1
良い機会ですねアラートダイアログ。
一見基本的なことのように思えますが、Androidにはこれを実行する組み込みダイアログがありません(私の知る限り)。幸い、標準のAlertDialogを作成する上で少し作業を追加するだけです。ユーザーがデータを入力するためのEditTextを作成し、それをAlertDialogのビューとして設定するだけです。許可される入力の種類をカスタマイズするには、入力タイプを設定する必要であれば。
メンバー変数を使用できる場合は、変数を 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();