如何使用“确定”按钮添加消息框?


81

我想显示一个带有“确定”按钮的消息框。我使用以下代码,但会导致带有参数的编译错误:

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

Answers:


71

我认为您可能没有为确定按钮添加点击监听器的问题。

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

30

因为在您的情况下,您只想用简短的消息通知用户,所以aToast会带来更好的用户体验。

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

更新:现在建议使用Snackbar代替Toast for Material Design应用程序。

如果您想给读者更长的时间来阅读和理解,则应该使用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

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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.