2011-02-11 24 views
7

Tôi có yêu cầu bật hộp thoại cảnh báo giống như màn hình EULA. Sẽ có văn bản mô tả EULA bằng hộp kiểm "Không hiển thị lại lần nữa" và trong 2 nút kết thúc cho OK và Hủy.Hộp thoại cảnh báo với văn bản được theo sau bằng một hộp kiểm và 2 nút

Bất kỳ trợ giúp nào về cùng được đánh giá cao.

Có thể có chế độ xem văn bản và hộp kiểm như một phần của hộp thoại cảnh báo không? Nếu có, làm thế nào để làm điều đó? bất kỳ mã mẫu nào được đánh giá cao.

-Cảm ơn & regards, Manju

+3

EULA không bao giờ có thông báo 'Không hiển thị lại lần nữa' này. Chỉ cung cấp nút Đồng ý và Không đồng ý ở dưới cùng. Và đặt một liên kết đến EULA của bạn trong một số menu trong chương trình của bạn, để người dùng có thể xem nó bất cứ lúc nào họ muốn. – Mudassir

+0

Ngoài ra nếu đây không phải là giải pháp thiết kế tốt nhất cho EULA, điều này có thể cần thiết cho các hộp thoại khác có thể tùy chọn thực hiện thêm một hành động. –

Trả lời

15

tôi phải đồng ý với Mudassir, EULA không giả sử có "Không hiển thị một lần nữa" hộp kiểm tra, nhưng dưới đây là cách bạn có thể đi về làm một cái gì đó như thế mặc dù.

Bạn có thể sử dụng một AlertDialog.Builder để xây dựng một hộp thoại có chứa một khung nhìn (mà bạn có thể thiết kế trong XML). Dưới đây là ví dụ

AlertDialog.Builder eulaBuilder = new AlertDialog.Builder(this); 
      LayoutInflater eulaInflater = LayoutInflater.from(this); 
      View eulaLayout = eulaInflater.inflate(R.layout.eula, null); 
      eulaBuilder.setView(eulaLayout); 
      Checkbox dontShowAgain = (CheckBox)eulaLayout.findViewById(R.id.dontShowAgain); 
      eulaBuilder.setPositiveButton("Agree", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface d, int m) { 
        // Do something 
       } 
      });   
      eulaBuilder.setNegativeButton("Disagree", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface d, int m) { 
        // Do something 
       } 
      }); 
      eulaMsg = eulaBuilder.create(); 

Điều bạn có thể làm là tạo XML bằng một đối tượng duy nhất, Hộp kiểm. Sau đó thêm khung nhìn vào AlertDialog.Builder. Sử dụng AlertDialog.Builder.setMessage ("EULA message here") để đặt thông điệp EULA của bạn.

+0

Tôi nghĩ rằng giải pháp này thiếu một dòng eulaBuilder.setView (eulaLayout); – Juhani

3

Nhìn vào hai phương pháp khác nhau:

1) Phương pháp đầu tiên đơn giản hơn và rất nhanh:

CheckBox checkBox = new CheckBox(this); 
checkBox.setText("This is your checkbox message"); 
LinearLayout linearLayout = new LinearLayout(this); 
linearLayout.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, 
         LinearLayout.LayoutParams.FILL_PARENT)); 
linearLayout.setOrientation(1);  
linearLayout.addView(checkBox); 

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this); 
alertDialogBuilder.setView(linearLayout); 
alertDialogBuilder.setTitle("This is the title of alert dialog"); 
alertDialogBuilder.setMessage("This is the message of alert dialog"); 
alertDialogBuilder.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface arg0, int arg1) { 
      // do something 
    } 
}); 
alertDialogBuilder.show(); 

2) Phương pháp thứ hai, với một bố trí tùy chỉnh hơn:

xem trang này page, đó cũng là mã XML để tạo hộp kiểm.

+0

Nó đã qua rất nhiều thời gian, nhưng bạn có thể nhớ trong phương pháp đầu tiên làm thế nào yo sẽ có được giá trị hộp kiểm bên trong AlertDialog? –

+0

Bạn có thể sử dụng hộp kiểm (trước đây được đánh dấu là cuối cùng) bên trong "onClick". Vì vậy, phương thức "isChecked()" có sẵn và chạy ok !. Cảm ơn! –

Các vấn đề liên quan