如何在保存数据之前知道EditText是否已更改?

时间:2016-02-17 13:51:11

标签: java android forms android-edittext

我有一个个人资料的表单,其中有一些EditText,例如姓名,地址,城市等。我按下它后会有Button来保存这些数据。

所以我想知道在让我的应用程序与数据库连接并更新之前,如何检查是否有更改。

我认为在TextChangedListener()boolean上使用onTextChanged()一些afterTextChanged(),但我不知道该怎么做。

有什么建议吗?非常感谢你!

我已经尝试过以下代码,它对我有用。我现在有这个:

public class ProfileActivity extends Activity {

TextView done_btn;
EditText local_court;
boolean hasChanges = false;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_profile);

    done_btn = (TextView) findViewById(R.id.done_profile_btn);
    local_court = (EditText)findViewById(R.id.input_local_court);

    done_btn.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View view){
            if(checkChanges()) {
                //saveChanges();
                finish();
                Toast.makeText(getApplicationContext(), "Your changes have been saved", Toast.LENGTH_SHORT).show();
            }
        }
    });

public boolean checkChanges() {
        local_court.addTextChangedListener(new TextWatcher() {
            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                hasChanges = true;
            }

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            }

            @Override
            public void afterTextChanged(Editable s) {
            }
        });
        return hasChanges;
    }
}

我想我应该和其他EditText一样。

谢谢大家!

1 个答案:

答案 0 :(得分:0)

如果您的目标只是检查某些内容是否发生了变化,只需将当前的EditText值检查为之前的值。

但如果你想知道文字是否被触及,甚至还原为原文,请按以下步骤操作。

EditText etext = (EditText) view.findViewById(R.id.editTxt);

etext.addTextChangedListener(new TextWatcher() {

                                             @Override
                                             public void onTextChanged(CharSequence s,
                                                                       int start, int before,
                                                                       int count) {
                                                 //Set your boolean here to true
                                             }

                                             @Override
                                             public void beforeTextChanged(CharSequence s,
                                                                           int start, int count,
                                                                           int after) {
                                             }

                                             @Override
                                             public void afterTextChanged(Editable s) {
                                             }
                                         }

    );