2011-04-12 5 views
1

타이머가있는 AlertDialog를 만들고 싶습니다. 기본적으로 사용자가 30 초 후에 대화 상자에있는 버튼에 대한 결정을 내리지 않으면 대화 상자가 사라지 길 원합니다. AlertDialog 빌더를 사용하여 대화 상자를 작성할 수 있지만 .show() 메소드가 실행 된 후에 .setMessage() 메소드를 사용하여 텍스트를 업데이트 할 수없는 것 같습니다.AlertDialog with Timeout

내가해야 할 것에 대한 아이디어가 있습니까?

따라서 아래 코드에서 .show() 메서드 다음에 .setMessage() 메서드를 실행하면 아무 것도 볼 수 없습니다. 이것은 대화 상자의 텍스트를 실시간으로 업데이트 할 수 없다는 것을 알려줍니다. 당신은 당신의 코드에서 변경하려는 텍스트 뷰 (또는 무엇이든)에 대한 핸들을 얻을 수 있도록

// Create the alert dialog with a alert builder. 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setTitle("Confirm Settings Change") 
      .setCancelable(false) 
      .setPositiveButton("Confirm", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
        this.finish(); 
       } 
      }) 
      .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
        dialog.cancel(); 
       } 
      }); 
    alert = builder.create(); 
    alert.setMessage("test"); 
    alert.show(); 

답변

2

난 당신이 이전에 나중에 다시 호출 할 수하기 위해 show()를 호출하기 setMessage() 적어도 한 번 이전에 불렀다 필요가 있다고 생각. 당신은 빈 값으로 설정하거나 임시 하나, 나중에 업데이트 할 수 있습니다 :

alert.setMessage("test"); 
alert.show(); 
... 
alert.setMessage("test again"); 
+0

저것 봐, 네 말이 맞아. 감사!! –

0

당신은해서 ProgressDialog와 함께 작업을 수행 할 수 있습니다

public Context ioContext; 
private ProgressDialog ioProgressDialog; 


ioProgressDialog = ProgressDialog.show(ioContext, "", "This is my dialog!", true); 
ioProgressDialog.setMessage(Html.fromHtml("<font color='black'>" + isMensaje + "</font>"));