2010-02-03 1 views
4
나는 ProgressDialog를 만들려면 다음 코드를 사용하고

(내부 내 Activity) :문제 /으로 onPrepare Dialog

@Override 
protected Dialog onCreateDialog(int id) { 
    switch (id) { 
     case DIALOG_LOOKUP: 
      return new ProgressDialog(this, ProgressDialog.STYLE_SPINNER); 
    } 
    return null; 
} 

@Override 
protected void onPrepareDialog(int id, Dialog dialog) { 
    switch (id) { 
     case DIALOG_LOOKUP: 
      dialog.setCancelable(true); 
      dialog.setTitle(R.string.dialogLookup_title); 
      ((ProgressDialog)dialog).setMessage(getResources().getString(R.string.dialogLookup_message)); 
      dialog.setOnCancelListener(new OnCancelListener() { 
       @Override 
       public void onCancel(DialogInterface dialog) { 
        Toast.makeText(MyActivity.this, "canceled", Toast.LENGTH_SHORT).show(); 
       } 
      }); 
      break; 
    } 
} 
문제는 실제로 제목을 설정하지 않고 그것을 가하고 있다는 점이다

어떤 별난 두 배 상자에서.

그것은 나에게주고이 :

bad progress

하지만 난 더 같은 것을 기대 해요 :

good progress

어떤 아이디어?

+0

당신으로 onPrepare Dialog가 ProgressDialog.STYLE_SPINNER하는 방법을 사용해야합니다? – Rintoul

+0

아니요. 말씀 드렸듯이 활동에 있습니다. http://developer.android.com/reference/android/app/Activity.html#onPrepareDialog%28int,%20android.app.Dialog%29 –

답변

6

방금 ​​샘플을 시도한 결과 ProgressDialog.STYLE_SPINNER에서 ProgressDialog.STYLE_HORIZONTAL으로 바뀌 었습니다. 이상한 이중 상자 문제가 해결되었습니다.

그리고 제목과 텍스트도 표시됩니다.

편집 :

당신은 ProgressDialog 생성자에서 ProgressDialog.STYLE_SPINNER을 전달하고 있습니다.

doc에서 두 번째 인수는 테마 ID입니다.

당신은 ProgressDialog 객체를 생성 및 대화의 서브 클래스에 setProgressStyle

case DIALOG_LOOKUP: 
    ProgressDialog pdlg = new ProgressDialog(this); 
    pdlg.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
    return pdlg; 
+0

D' oh ... 내가 어떻게 그걸 놓칠 수 있니? 나는 아직도 제목을 얻지 않고있다. –

+0

글쎄, 어떤 이유로 나는'setTitle()'을'onCreateDialog()'로 옮겨야 만했다. 도와 주셔서 감사합니다. –

+0

오래 전 이었지만 누군가에게 도움이되는 경우를 대비해 : dialog.setTitle (...)은 onCreateDialog()에서도 설정되어있는 경우 onPrepareDialog()에서만 작동합니다. (4.1.2에서 시도) – Crocodile