2013-06-20 4 views
13

나는 안드로이드 응용 프로그램을 만듭니다. 나는 EditText가있다. 사용자가 텍스트를 변경 한 후 자동으로 변경 내용 (또는 다른 내용)을 저장하려고합니다. 는 지금은Android - EditText에서 * after * 텍스트가 변경됩니다.

editText.addTextChangedListener(textWatcher); 

TextWatcher textWatcher = new TextWatcher() { 
    public void afterTextChanged(Editable s) { 
    ... 
    } 

사용하지만 모든 작은 변화 (추가 \ 편지를 제거) 한 후 변경 사항을 저장하고, 나는 그것이 단지 최종 사용자 후 저장 될 거라고합니다 (키보드를 닫고, 다른 편집 문구를 클릭하는 등). 어떻게하면됩니까?

+2

lostFocus 어때요? –

답변

15

onFocusChangesetOnFocusChangeListener이고 hasFocus에 부울 매개 변수가 있습니다. 이것이 틀리면 다른 컨트롤에 포커스를 잃어 버렸고 editext의 데이터를 저장해야합니다. 예를 들어

EditText editText= (EditText) findViewById(R.id.editText); 

editText.setOnFocusChangeListener(new OnFocusChangeListener() {   

     public void onFocusChange(View v, boolean hasFocus) { 
      if(!hasFocus) { 
       //SAVE THE DATA 
      } 

     } 
    }); 

모든 EditTexts에 대한 setOnFocusChangeListener을 구현하고 너무 Back Press 이벤트를 처리해야합니다. 사용자가 edittext의 데이터를 변경하고 다른 EditText로 이동하지 않고 다시 누르면 편집 된 vallue가 저장되지 않습니다. 따라서 onKeyDown 또는 onBackPressed도 사용해야합니다

+0

좋아 보이지만 텍스트가 변경되었는지 확인할 수 있습니까? TextWatcher와 FocusChangeListener를 결합 할 수 있습니까? – TamarG

+0

네, 둘 다 결합 할 수 있습니다. 또한 데이터 저장 작업 횟수를 줄입니다. –

+0

어떻게 보여줄 수 있습니까? editText.addTextChangedListener를 onFocusChange에 넣으시겠습니까? afterTextChanged에 editText.setOnFocusChangeListener를 넣으시겠습니까? – TamarG

관련 문제