[OK]ボタンのあるメッセージボックスを表示したい。次のコードを使用しましたが、引数付きのコンパイルエラーが発生します。
AlertDialog.Builder dlgAlert = new AlertDialog.Builder(this);
dlgAlert.setMessage("This is an alert with no consequence");
dlgAlert.setTitle("App Title");
dlgAlert.setPositiveButton("OK", null);
dlgAlert.setCancelable(true);
dlgAlert.create().show();
Androidでメッセージボックスを表示するにはどうすればよいですか?
OKポジティブボタンのクリックリスナーを追加していないという問題があると思います。
dlgAlert.setPositiveButton("Ok",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
//dismiss the dialog
}
});
あなたの状況では、短くてシンプルなメッセージでユーザーに通知したいだけなので、Toast
はユーザーエクスペリエンスを向上させます。
Toast.makeText(getApplicationContext(), "Data saved", Toast.LENGTH_LONG).show();
更新:Toast for Material Designアプリの代わりに Snackbar が推奨されます。
読者に読んで理解する時間を与えたい、より長いメッセージがある場合は、DialogFragment
を使用する必要があります。 (現在、 ドキュメント は、AlertDialog
を直接呼び出すのではなく、フラグメントでラップすることを推奨しています。)
DialogFragment
を拡張するクラスを作成します。
public class MyDialogFragment extends DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the Builder class for convenient dialog construction
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("App Title");
builder.setMessage("This is an alert with no consequence");
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// You don't have to do anything here if you just
// want it dismissed when clicked
}
});
// Create the AlertDialog object and return it
return builder.create();
}
}
次に、アクティビティで必要なときに呼び出します。
DialogFragment dialog = new MyDialogFragment();
dialog.show(getSupportFragmentManager(), "MyDialogFragmentTag");
@Override
protected Dialog onCreateDialog(int id)
{
switch(id)
{
case 0:
{
return new AlertDialog.Builder(this)
.setMessage("text here")
.setPositiveButton("OK", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface arg0, int arg1)
{
try
{
}//end try
catch(Exception e)
{
Toast.makeText(getBaseContext(), "", Toast.LENGTH_LONG).show();
}//end catch
}//end onClick()
}).create();
}//end case
}//end switch
return null;
}//end onCreateDialog