「OK」ボタンでメッセージボックスを追加するにはどうすればよいですか?


81

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でメッセージボックスを表示するにはどうすればよいですか?


どういうわけかあなたのコードは私にとってはそのままでした。私のSDK設定<uses-sdk android:minSdkVersion="9" android:targetSdkVersion="15" />は、あなたが提案しているコンパイルエラーが発生しなかった理由と関係があるのか​​もしれません。
RBT 2017

回答:


71

OKポジティブボタンのクリックリスナーを追加していないのではないかと思います。

dlgAlert.setPositiveButton("Ok",
    new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
          //dismiss the dialog  
        }
    });

30

あなたの状況では、短くて単純なメッセージでユーザーに通知したいだけなので、Toastユーザーエクスペリエンスを向上させることができます。

Toast.makeText(getApplicationContext(), "Data saved", Toast.LENGTH_LONG).show();

アップデート: Aスナックバーは、マテリアルデザインのアプリのために乾杯するのではなく、今お勧めします。

読者に読んで理解する時間を与えたい、より長いメッセージがある場合は、を使用する必要があり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");

も参照してください

ここに画像の説明を入力してください


トーストについての素晴らしいアイデア。私にとってはインポートが必要でした:[import android.widget.Toast;]
AnthonyVO 2016年

9

コードは私にとっては問題なくコンパイルされます。インポートを追加するのを忘れた可能性があります。

import android.app.AlertDialog;

とにかく、ここに良いチュートリアルがあります


3
@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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.