Android programming: How to save EditText changes without a save button (i.e., on text changed event)

I’ve been working through the examples in the excellent Android book, Android Programming: The Big Nerd Ranch Guide, and was trying to figure out how the example in Chapter 10 worked, specifically how the crime data was being saved without the use of a “save” button. The code below shows that they use a combination of an addTextChangedListener and a TextWatcher (android.text.TextWatcher). I highlighted a few of the important parts:

mTitleField = (EditText)v.findViewById(;

mTitleField.addTextChangedListener(new TextWatcher() {

    // the user's changes are saved here
    public void onTextChanged(CharSequence c, int start, int before, int count) {

    public void beforeTextChanged(CharSequence c, int start, int count, int after) {
        // this space intentionally left blank

    public void afterTextChanged(Editable c) {
        // this one too

They do a similar thing later in the code with a CheckBox:

mSolvedCheckBox = (CheckBox)v.findViewById(;

mSolvedCheckBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
    // checkbox changes are saved here
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        // set the crime's solved property

I’m not sure that it’s a good idea to use this technique too often, but when you want/need to save a change to an EditText or CheckBox widget in an Android app without using a save button, these examples are helpful.