2011-08-12 3 views
53

ProgressDialog에 취소 버튼을 설정하고 싶습니다. 나는이 ProgressDialog상의 onClickListener로 버튼을 설정하려는진행률 대화 상자에서 취소 버튼을 설정하는 방법은 무엇입니까?

myDialog = new ProgressDialog(BaseScreen.this); 
myDialog.setMessage("Loading..."); 
myDialog.setCancelable(false); 
myDialog.show(); 

: 다음은 내 코드입니다.

myDialog.setButton("Cancel", new OnClickListener() {   
    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     // TODO Auto-generated method stub   
     myDialog.dismiss(); 
    } 
}); 

을하지만 그것은 작동하지 않습니다 : 이 코드로했습니다. 나는 다른 비슷한 청취자들도 시도했지만 여전히 성공하지 못했다. 이 문제를 어떻게 해결할 수 있습니까?

답변

126

사용중인 setButton 메서드는 더 이상 사용되지 않습니다 (여전히 작동해야하지만). 또한 대화 상자를 표시하는 앞에 버튼 을 추가 할 수 있습니다. 시도 :

myDialog = new ProgressDialog(BaseScreen.this); 
myDialog.setMessage("Loading..."); 
myDialog.setCancelable(false); 
myDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel", new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     dialog.dismiss(); 
    } 
}); 
myDialog.show(); 
+6

참고로,'dialog.dismiss 활동에 다른 곳에서 간단한 호출 방법을 사용 'onClick' 리스너는 자동으로 대화 상자를 닫을 것입니다. 사실,이 메서드는 대화 상자가 닫히는 것을 방지 할 수 없습니다. –

17

당신은 단지 버튼 클릭에 대화 상자를 닫해야하는 경우 또한이 myDialog.setButton("Cancel", (DialogInterface.OnClickListener) null);을 사용할 수 있습니다 myDialog.show();
를 호출하기 전에 myDialog.setButton를 호출해야합니다.

2

확인이

private void createCancelProgressDialog(String title, String message, String buttonText) 
{ 
    cancelDialog = new ProgressDialog(this); 
    cancelDialog.setTitle(title); 
    cancelDialog.setMessage(message); 
    cancelDialog.setButton(buttonText, new DialogInterface.OnClickListener() 
    { 
     public void onClick(DialogInterface dialog, int which) 
     { 
      // Use either finish() or return() to either close the activity or just the dialog 
      return; 
     } 
    }); 
    cancelDialog.show(); 
} 

()`에 필요하지 않습니다 그럼 그냥

createCancelProgressDialog("Loading", "Please wait while activity is loading", "Cancel"); 
+0

4.3 이상 취소됩니다. –

관련 문제