Làm thế nào để thêm hộp tin nhắn với nút 'OK'?


81

Tôi muốn hiển thị một hộp thông báo có nút OK. Tôi đã sử dụng mã sau nhưng nó dẫn đến lỗi biên dịch với đối số:

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();

Tôi nên làm như thế nào về việc hiển thị hộp thông báo trong Android?


Bằng cách nào đó mã của bạn hoạt động như cho tôi. Có thể cài đặt sdk của tôi <uses-sdk android:minSdkVersion="9" android:targetSdkVersion="15" />có gì đó liên quan đến lý do tại sao tôi không gặp bất kỳ lỗi biên dịch nào mà bạn đang đề xuất.
RBT

Câu trả lời:


71

Tôi nghĩ rằng có thể có vấn đề mà bạn chưa thêm trình nghe nhấp chuột cho nút tích cực ok.

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

30

Vì trong tình huống của bạn, bạn chỉ muốn thông báo cho người dùng bằng một tin nhắn ngắn và đơn giản, a Toastsẽ tạo ra trải nghiệm người dùng tốt hơn.

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

Cập nhật: Một Snackbar được khuyến cáo hiện nay thay vì một Toast cho các ứng dụng thiết kế Vật liệu.

Nếu bạn có một thông điệp dài hơn muốn cho người đọc thời gian đọc và hiểu, thì bạn nên sử dụng a DialogFragment. ( Tài liệu hiện khuyến nghị gói bạn AlertDialogtrong một phân đoạn thay vì gọi nó trực tiếp.)

Tạo một lớp mở rộng 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();
    }
}

Sau đó gọi nó khi bạn cần trong hoạt động của mình:

DialogFragment dialog = new MyDialogFragment();
dialog.show(getSupportFragmentManager(), "MyDialogFragmentTag");

Xem thêm

nhập mô tả hình ảnh ở đây


Ý tưởng tuyệt vời về Bánh mì nướng. Đối với tôi, nó yêu cầu nhập: [import android.widget.Toast;]
AnthonyVO

9

Mã biên dịch ok cho tôi. Có thể bạn đã quên thêm nhập:

import android.app.AlertDialog;

Dù sao, bạn có một hướng dẫn tốt ở đây .


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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.