如何在edittextpreference對話框中設置空驗證,以便如果它爲null,則用戶不應該能夠單擊確定,並且應該在對話框中顯示一些消息。我一直試圖找到它很長一段時間,但沒有成功....如何在edittextpreference對話框中設置空驗證
回答
當的EditText爲null,則確定按鈕將被禁用,只要輸入文本都將重新啓動::
public class CustomEditTextPreference extends EditTextPreference implements
OnClickListener {
public CustomEditTextPreference(Context ctx, AttributeSet attrs, int defStyle)
{
super(ctx, attrs, defStyle);
}
public CustomEditTextPreference(Context ctx, AttributeSet attrs)
{
super(ctx, attrs);
}
private class EditTextWatcher implements TextWatcher
{
@Override
public void onTextChanged(CharSequence s, int start, int before, int count){}
@Override
public void beforeTextChanged(CharSequence s, int start, int before, int count){}
@Override
public void afterTextChanged(Editable s)
{
onEditTextChanged();
}
}
EditTextWatcher m_watcher = new EditTextWatcher();
/**
* Return true in order to enable positive button or false to disable it.
*/
protected boolean onCheckValue(String value)
{
if (value.trim().equals(""))
{
return false;
}
return true;
}
protected void onEditTextChanged()
{
boolean enable = onCheckValue(getEditText().getText().toString());
Dialog dlg = getDialog();
if(dlg instanceof AlertDialog)
{
AlertDialog alertDlg = (AlertDialog)dlg;
Button btn = alertDlg.getButton(AlertDialog.BUTTON_POSITIVE);
btn.setEnabled(enable);
}
}
@Override
protected void showDialog(Bundle state)
{
super.showDialog(state);
getEditText().removeTextChangedListener(m_watcher);
getEditText().addTextChangedListener(m_watcher);
onEditTextChanged();
}
}
我認爲你在找什麼是這個。您正在使用預定義的PreferenceDialog(帶有EditText)並且想要檢查文本是否爲空。據我所知,在這種情況下,「文本」是changedPreference,因此你可以這樣做:
只需使用onPreferenceChangedListener。
yourPreference.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object changedValue) {
if(changedValue == null) {
// handle it being null
return false;
} else {
return true;
}
}
});
對於更高級的需求,我建議你實現自己的對話框和裏面,做任何你想要的。您可以通過在.xml中定義首選項列表條目來實現這一點,然後在點擊它時產生對話框。
Preference yourCustomPref = (Preference) findPreference("yourPref");
yourCustomPref.setOnPreferenceClickListener(new OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
// spawn your dialog here
return true;
}
});
這是你如何可以實現自定義的EditText對話框:
public Builder buildDialog(final Context c) {
AlertDialog.Builder builder = new AlertDialog.Builder(c);
builder.setTitle("EditText Dialog");
builder.setMessage("Enter text:");
LinearLayout llV = new LinearLayout(c);
llV.setOrientation(1); // 1 = vertical
final EditText patName = new EditText(c);
patName.setHint("Enter text...");
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT, 1f);
lp.bottomMargin = 20;
lp.rightMargin = 30;
lp.leftMargin = 15;
patName.setLayoutParams(lp);
llV.addView(patName);
builder.setView(llV);
builder.setPositiveButton("Save", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if(patName.getText().toString().length() > 0) {
} else {
}
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
return builder;
}
然後調用它像這樣:
buildDialog(yourcontext).show();
那麼我會建議你實現對話框你自己。我應該只花幾分鐘來實現你想要的一切。 –
亞,我可以做但設置(http://developer.android.com/guide/topics/ui/settings.html)對話框內置。 –
當然。但是當點擊PreferenceActivity中的List元素時,你可以做任何你想做的事情。例如,顯示你的自定義對話框,並在那裏做所有你想要的事情。 –
edttxtpref = (EditTextPreference) getPreferenceScreen().findPreference(
"edttxtkey");
edttxtpref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(
android.preference.Preference preference, Object newValue) {
if (newValue.toString().trim().equals("")) {
Toast.makeText(getActivity(), "Username can not be empty",
Toast.LENGTH_LONG).show();
return false;
}
return true;
}
});
通過這種方式,驗證完成後,如果我們希望在對話框中顯示消息,然後必須按照Phil已經告訴的那樣創建一個自定義對話框。
- 1. 如何將SetOnClickListener()設置爲EditTextPreference對話框的OK按鈕?
- 2. 在對話框中重置JQuery驗證
- 3. 設置>驗證對話框顯示空白
- 4. Android EditTextPreference禁用對話框
- 5. 驗證editTextPreference Android
- 6. 如何在對話框中設置Butto.onClickListener?
- 7. Facebook身份驗證對話框配置
- 8. 數據對話框驗證:空或者驗證
- 9. jQgrid,在搜索對話框中驗證
- 10. 如何使EditTextPreference對話框中的Enter鍵工作
- 11. 警報對話框中的EditText框的空驗證 - Android
- 12. 對話框的樣式像EditTextPreference
- 13. 對話框點擊的Android EditTextPreference
- 14. 如何設置保證金在對話框
- 15. jquery對話框驗證
- 16. Axapta的對話框驗證
- 17. jQuery驗證+對話框
- 18. 需要驗證對話框
- 19. jQuery驗證與對話框
- 20. jquery對話框驗證
- 21. 如何設置對話框的位置?
- 22. 關閉對話框時,如何防止jQuery驗證從驗證
- 23. Android驗證程序EditTextPreference
- 24. 如何驗證自定義對話框中的複選框?
- 25. 在文本框中設置驗證
- 26. 如何使用對話框片段設置全屏對話框
- 27. 如何在C#.Net 3.5 SP1中顯示驗證對話框
- 28. 如何在Jquery UI對話框中驗證表單?
- 29. 如何在JQuery對話框中進行驗證?
- 30. 如何讓jQuery Tools驗證在覆蓋對話框中工作?
那是什麼要問...如何做到這一點,因爲我沒有得到任何關於這個的。不要求你爲我寫一段代碼,而是要告訴做什麼。 –
@ weblado.at :: edittext和edittextpreference是兩個不同的東西,如果你知道的話。我知道如何在edittext上設置驗證.....你只是投了我一票,甚至沒有正確閱讀任務。 –
我想你不會讀最後一行....我試圖找到它,因爲很長一段時間,但沒有成功....我已經嘗試了你給的鏈接。問題是這個setonpreferencechangelistener不叫。 –