2011-11-09 4 views
1

이 대화 상자 스 니펫이 있습니다.Dialogs에서 언제 dimiss() 또는 hide()를 호출해야합니까?

String message="This will be my message"; 

    AlertDialog.Builder alt_bld = new AlertDialog.Builder(this); 
    alt_bld.setMessage(message) 
    .setCancelable(false) 
    .setPositiveButton("OK", new DialogInterface.OnClickListener() 
    { 
     public void onClick(DialogInterface dialog, int id) 
     { 


      ProgressDialog dialog1 = ProgressDialog.show(CombatActivity.this, "Loading", 
        "Pushing OK...", true); 


     Intent i = new Intent(); 
     i.setClass(MyFirstActivity.this, MySecondActivity.class); 
     startActivity(i); 
     finish(); 



     } 
    }); 

    AlertDialog alert = alt_bld.create(); 
    // Title for AlertDialog 
    alert.setTitle("Nyertél."); 
    // Icon for AlertDialog 
    alert.setIcon(R.drawable.icon); 
    alert.show(); 

내 질문 : 이들 중 .hide() 또는 .dismiss()를 호출해야합니까? 메시지 텍스트가 동적으로 읽혀지며 표시된 대화 상자마다 별도의 인스턴스가 필요하지 않습니다. 난 단지 하나만 업데이트 된 메시지를 원한다.

그래서 언제 어떻게 제거해야합니까?

+0

http://stackoverflow.com/questions/2850573/activity-has-leaked-window-that-was-originally-added –

답변

2

그래, finish()에 전화하기 전에 dismiss()에 전화해야합니다. 그렇지 않으면 대화 상자가 백그라운드에 남아있어 다른 작업을 시작하려고 할 때 문제가 발생할 수 있습니다.

+0

왜 dismiss()하고 remove()하지 않습니까? –

+1

ProgressDialog에서 remove()와 같은 메소드가 없습니다. – Carnal

1

안드로이드에서 hide() a AlertDialog은 단순히 화면에서 사라지게하는 것을 의미합니다. 그러나 여전히 유지되고 Context으로 붙어 있습니다. 따라서 Context에서 분리하려면 dismiss() 또는 cancel() 방법으로 전화해야합니다. 그렇지 않으면 "누출 된 창 오류" 줄 것입니다.