2010-07-27 3 views
4

안드로이드 앱에서 AlertDialog 상자를 재사용합니다.안드로이드 - AlertDialog의 양수 버튼 텍스트 변경

onCreateDialog() 메서드에서 대화 상자를 만들고 onPrepareDialog() 메서드에서 다음 코드를 사용하여 positiveButton의 텍스트를 변경하려고합니다.

alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, this.getString(R.string.add), new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int id) { 
      //Handler code 
    } 
} 

onclick 수신기는 변경되었지만 단추 텍스트는 변경되지 않습니다.

Android에서 버그가 있습니까? 아니면 잘못하고 있습니까?

답변

21

하나 개의 솔루션 다시 그리기 버튼을 강제로 그냥 작동합니다. 예를 들어, 긴 작업을 취소하는 버튼은 완료시 '확인'으로 바뀔 수 있습니다.

Button button = progressDialog.getButton(ProgressDialog.BUTTON1); 
button.setText("OK"); 
button.invalidate();
+0

감사합니다. 매력처럼 작동합니다. – Sudar

+0

감사합니다. 이 질문에서와 같이 onPrepareDialog의 AlertDialog 버튼에이 작업을 수행하면 'invalidate()'가 필요하지 않습니다. 아마도 그 시점에서 대화가 화면에 없기 때문일 것입니다. –

-1

이 날

@Override 
protected Dialog onCreateDialog(int id) { 
    switch (id) { 

     case DIALOG_ID: 
      return AlertDialog.Builder(this).setTitle(R.string.contact_groups_add) 
    .setView(addView).setPositiveButton(R.string.ok, 
      new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, 
         int whichButton) { 

       } 
      }).setNegativeButton(R.string.cancel, 
      new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, 
         int whichButton) { 
       } 
      }).create(); 
    } 
    return null; 
} 
+0

이 코드는 onCreateDialog() 또는 onPrepareDialog()에 있습니까? – Sudar

+0

그들 중 누구도 아닙니다. 나는 그러한 활동 방법을 재사용하지 않는다. 이 코드는 단순히 addView의 뷰가있는 경고 대화 상자를 보여줍니다 (이전에 비정상적으로 확장 됨). – Pentium10

+0

이 코드를 이해합니다. 그러나 나의 질문은 달랐다. 이미 onCreateDialog() 및 onPrepareDialog() 함수를 사용하고 있습니다. onCreateDilaog() 메서드에서 대화 상자를 만들었지 만 onPrepareDialog()에서 양수 버튼의 텍스트를 변경하려고하면 텍스트가 아닌 onClickListener 만 변경됩니다. – Sudar