2012-10-29 20 views
2

我的子類DialogFragment顯示給用戶的輸入字段。保持DialogFragment打開,直到用戶輸入有效Android?

如果用戶沒有提供任何輸入,我想保持對話框打開並在輸入欄顯示錯誤。無論輸入字段是否爲空,用戶按下正確的「保存」按鈕時,對話框會自動解除。

如何覆蓋此默認行爲?

代碼片段(完整的代碼很長,但你的想法):

public class SurveySingleQuestionDialog extends DialogFragment implements DialogInterface.OnClickListener { 

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
    return (builder.setTitle(mArgs.getString("question_body")) 
      .setView(layout) 
      .setPositiveButton(R.string.save, this) 
      .setNegativeButton(android.R.string.cancel, null) 
      .setCancelable(false) 
      .show()); 

} 

@Override 
public void onClick(DialogInterface dialog, int which) { 

if(validInputs()){ 

//dismiss dialog and save inputs 

} 
else{ 

//show error on input field 

} 

} 

} 

什麼建議嗎?

+0

您是否添加了斷點來檢查validInputs()的結果? – toadzky

+0

工作正常,我可以看到紅色感嘆號,而對話框正在關閉......我的數據庫函數沒有(正確)觸發。 – Mirko

回答

1

我認爲setNegative/setPositive按鈕被設計爲在回調返回後消除對話。你可能會更好地在自己的視圖中包含自己的按鈕並自行解除對話框

+1

這是我真的很想避免...它在我看來,它將重新發明輪...:/ – Mirko

+0

在最後,我用了一個活動,像一個對話..主題 – Mirko

+0

@Mirko這是沒有真正重新發明輪子。 DialogFragment類的文檔給出了明確的自由來實現你自己的UI,並且不會限制你實現你自己的按鈕行爲 – Leo

相關問題