2011-11-22 49 views
2

無論何時該對話框準備好繪製,我都需要更新自定義對話框內容。我不確定這可以直接刷新,或者如果我需要先關閉並重新安裝它,刷新對話框的內容

+2

是否要在對話框中更新視圖的某個值或使用新的視圖佈局完全重新繪製它? – C0deAttack

回答

3

獲取對話框正在使用並且[post]使其無效的視圖。

而不是Dialog.setContentView(int);

做這樣的事情:

public class MyDialog { 
     View v = null; 

     public Dialog show(Context context) { 
      Dialog d = new Dialog(context); 
      v = LayoutInflater.from(context).inflate(R.layout.resource, null); 
      d.setContentView(v); 
      return d.show(); 
     } 

     public void update() { 
      v.invalidate(); 
     } 
} 
+0

我看不到在哪種情況下需要重新繪製。你能否爲我澄清一下? –

+1

如果想要一個服務來更新一個對話框[ProgressBar也許?],就是一個。 – AedonEtLIRA

+0

我認爲這不是一個正確的方法, –

0

可以在onPrepareDialog做的一切。每當一個對話框即將被顯示時被調用。

void onPrepareDialog(final int id, final Dialog dialog) { 
    switch(id) { 
    case MY_DIALOG: 
     TextView txtView = (TextView)dialog.findViewById(R.id.mytext); 
     txtView.setText("My new text"): 
     .... 
    } 
} 
+1

OP想要更新對話框'後'已被創建和顯示。 – AedonEtLIRA