2014-09-28 14 views
24

Tôi có thể không loại bỏ AlertDialog của mình sau khi nhấp vào PositiveButton không?Android Đừng bỏ qua AlertDialog sau khi nhấp vào PositiveButton

Tôi muốn duy trì hộp thoại hiển thị nội dung cập nhật trên danh sách ArrayAdapter của tôiWords.

Đây là mã của tôi. Cảm ơn sự giúp đỡ :)

AlertDialog.Builder sayWindows = new AlertDialog.Builder(MapActivity.this); 

    final EditText saySomething = new EditText(MapActivity.this); 

    sayWindows.setPositiveButton("ok", 
      new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 
        say = userName + " Says: "+saySomething.getText(); 
        showPosition.setText(say);      
       } 
      }); 

    sayWindows.setNegativeButton("cancel", 
      new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 
        dialog.dismiss(); 
       } 
      }); 

    sayWindows.setAdapter(listWords, null); 
    sayWindows.setView(saySomething); 
    sayWindows.create().show(); 
+0

bạn đã thử 'setCancelable (false) '? –

+0

Tôi đặt sayWindows.setCancelable (false) bên dưới setTitle, nhưng nó không hoạt động. –

+0

Và nó cũng không hoạt động trên PositiveButton onClick. –

Trả lời

41

Sau khi xem giải pháp @Little Child, tôi cố gắng thực hiện việc này. Hãy cho chúng tôi biết nếu điều này phù hợp với bạn.

AlertDialog.Builder sayWindows = new AlertDialog.Builder(
      MapActivity.this); 
    final EditText saySomething = new EditText(MapActivity.this); 
    sayWindows.setPositiveButton("ok", null); 
    sayWindows.setNegativeButton("cancel", null); 
    sayWindows.setAdapter(listWords, null); 
    sayWindows.setView(saySomething); 

    final AlertDialog mAlertDialog = sayWindows.create(); 
    mAlertDialog.setOnShowListener(new DialogInterface.OnShowListener() { 

     @Override 
     public void onShow(DialogInterface dialog) { 

      Button b = mAlertDialog.getButton(AlertDialog.BUTTON_POSITIVE); 
      b.setOnClickListener(new View.OnClickListener() { 

       @Override 
       public void onClick(View view) { 
        // TODO Do something 
        say = userName + " Says: "+saySomething.getText(); 
        showPosition.setText(say); 
       } 
      }); 
     } 
    }); 
    mAlertDialog.show(); 
+1

Cảm ơn bạn Nhưng nút tích cực dường như không có chức năng. Tôi đặt bánh mì nướng ở đó nhưng nó không hoạt động. –

+1

Huff, cuối cùng đã làm nó, bây giờ làm việc của nó, kiểm tra xem nó ra. Với những thay đổi của việc gán AlertDialog với create, sau đó setOnShowListener firt, và sau đó gọi show(). Hoạt động của nó bây giờ, hy vọng nó cũng phù hợp với bạn. Nếu có, tôi yêu cầu bạn đánh dấu nó là câu trả lời, để trong tương lai những người khác có thể tìm thấy nó dễ dàng. Cảm ơn. – Chitrang

+0

Cảm ơn bạn rất nhiều. Nó làm việc tốt cho tôi. –

8

dựa trên câu trả lời đã bỏ phiếu nhất cho How to prevent a dialog from closing when a button is clicked

final AlertDialog d = new AlertDialog.Builder(context) 
      .setView(v) 
      .setTitle(R.string.my_title) 
      .setPositiveButton(android.R.string.ok, null) //Set to null. We override the onclick 
      .setNegativeButton(android.R.string.cancel, null) 
      .create(); 

    d.setOnShowListener(new DialogInterface.OnShowListener() { 

     @Override 
     public void onShow(DialogInterface dialog) { 

      Button b = d.getButton(AlertDialog.BUTTON_POSITIVE); 
      b.setOnClickListener(new View.OnClickListener() { 

       @Override 
       public void onClick(View view) { 
        // TODO Do something 

       } 
      }); 
     } 
    }); 

Tôi tin rằng bạn cần phải ghi đè handler nút tích cực của. Thêm logic của bạn để loại bỏ hộp thoại khi một điều kiện nhất định được đáp ứng.

+0

Tôi không thể đặtAdapter (listWords, null) sau khi tôi thay đổi "AlertDialog.Builder d" thành "AlertDialog d". Bạn có thể cho tôi biết tại sao? –

+0

Cảm ơn. Làm việc cho tôi :) –

2

Thậm chí đơn giản hơn:

final AlertDialog alertDialog = new AlertDialog.Builder(context).setView(v) 
       .setPositiveButton(android.R.string.ok, null) 
       .setNegativeButton(android.R.string.cancel, null) 
       .show(); 

     Button b = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE); 
     b.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View view) { 
       //Do Your thing 
      } 
     }); 
+0

đây là câu trả lời hay nhất – pellyadolfo

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