2012-12-10 3 views
0

내 안드로이드 응용 프로그램에서 'IntEditTextPreference'라는 클래스를 사용하고 있습니다. 이 클래스는 사용자가 선호도를 정수로 사용하기를 원할 때 사용됩니다.NumberFormatException with IntEditTextPreference

하지만 문제가 있습니다. 사용자가 필드를 비워두고 "ok"를 누르면 NumberFormatException이 발생합니다.

필드가 비어있을 때 사용자가 "확인"을 누르지 않도록하려면 어떻게해야합니까?

감사합니다.

public class IntEditTextPreference extends EditTextPreference 
{ 

    public IntEditTextPreference(Context context) 
    { 
      super(context); 
    } 

    public IntEditTextPreference(Context context, AttributeSet attrs) 
    { 
     super(context, attrs); 
    } 

    public IntEditTextPreference(Context context, AttributeSet attrs, int defStyle) 
    { 
     super(context, attrs, defStyle); 
    } 

    @Override 
    protected String getPersistedString(String defaultReturnValue) 
    { 
     return String.valueOf(getPersistedInt(-1)); 
    } 

    @Override 
    protected boolean persistString(String value) 
    { 
     return persistInt(Integer.valueOf(value)); 
    } 

} 일반적으로

+0

기본값은 – CocoNess

+0

입니다. 여기서 persistInt 메소드는 무엇입니까? –

답변

0

NumberFormatException을 잡으려면 try/catch 블록이 있어야합니다. 그러나 이것을 할 수있는 많은 방법이 있습니다. 한 가지 방법은 setClickable 메서드를 false에 적용한 다음 텍스트가 null이 아니고 onTextChangedListener을 사용하는 정수 일 때 true를 사용할 수 있습니다. 또는 버튼을 클릭 할 때 빈 문자열이나 정수가 아닌지 확인하고 경고 메시지 토스트/경고/레이블을 사용하여 버튼에 다른 작업을 수행하기 전에 잘못된 필드가 있음을 알릴 수 있습니다. 희망이 도움이!

+0

고마워요! 난 끝냈어. EditTextPreference의 생성자에서 EditTextWatcher를 만들고 환경 설정'getEditText(). addTextChangedListener (watcher)'의 EditText에 연결했습니다. 그런 다음 관찰자 내부에서 필드가 비어 있는지 확인한 다음 이에 따라 단추를 사용하지 않도록 설정합니다. – Eduardo

+0

오신 것을 환영합니다. 다행이라고 생각합니다. 답변을 친절하게 받아 들인다면 같은 이슈를 가진 다른 사람들이 답을 찾는 것이 더 쉬울 것입니다. – codeMagic

0

당신이 브라우저 기반 응용 프로그램을 사용하는 경우, 당신은 입력이 유효 할 때 버튼을 표시 자바 스크립트/AJAX을 사용합니다. 이것은 이미 클라이언트 측에서 처리됩니다. NumberFormatException,을 피하려면 문을 사용하여 try - catch - 차단을 추가하기 만하면됩니다.

기본적으로 클라이언트 프레임 워크에 따라 다릅니다. 더 나은 프레임 워크 별 솔루션이있을 수 있습니다. 어느 쪽을 사용합니까?

+0

나는 안드로이드 태그를 설명하는 android – Eduardo

+0

Doh ...를 사용하고 있습니다. Sry는 현재 웹 기반 dev에 깊이 빠져 있었고 다른 것이있을 수 있다는 것을 깨닫지 못했습니다. – Wintermute