2012-01-26 68 views
3

我正在使用自定義的DialogFragment來讓用戶更改其登錄憑據。有一些文本字段和兩個按鈕(保存/取消)。佈局在DialogFragment的onCreateView方法中設置。重置Android DialogFragment

如果我打開對話框文本字段填充了默認值。當用戶更改文本字段中的文本並單擊取消按鈕時,該對話框將被解除。下一次對話框打開時,之前更改的文本字段不包含默認值,而是包含用戶之前更改過的文本。文本字段不會重置。這幾乎是在這裏提到的相同問題Reset an Android Dialog。問題是提供的解決方案引用了API級別11中棄用的Dialog,並且我無法將OnPrepareDialog與DialogFragment一起使用。

有沒有類似的方法來重置DialogFragment的內容?

+0

我有相反的問題。出於某種原因,我無法在對話結束後保留​​對話內容。你能解釋你是怎麼做到的? – njzk2

回答

5

你可以在你的類,它擴展DialogFragmet覆蓋的onResume(),如下所示:

private static class MyDialogFragment extends DialogFragment { 
    public static MyDialogFragment newInstance() { 
    // ... 
    } 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
    // ... 
    } 

    @Override 
    public void onResume() { 
    super.onResume(); 
    Dialog dialog = getDialog(); 
    // reset code goes here - use dialog as you would have in onPrepareDialog() 
    } 
} 
0

您還可以使用.setText()方法在你的活動爲負號按鈕點擊後的反應。例如: 在DialogFragment.java,onCreateDialog(...)限定AlertDialog.Builder

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 

然後

//this is better than creating button in layout 
builder.setNegativeButton(R.string.button_cancel, 
    new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int whichButton) { 
      ((MainAct) getActivity()).cancelDialog(DialogFragment.this); 
     } 
    } 
); 

在MainActivity.java創建方法cancelDialog(DialogFragment DF){

//here use df to reset text fields 
}