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

Java 如何在保存数据之前知道EditText是否已更改?,java,android,forms,android-edittext,Java,Android,Forms,Android Edittext,我有一个个人资料表格,上面有一些EditText,比如姓名、地址、城市等等。我有一个按钮,一旦你按下它,就可以保存这些数据 因此,我想知道,在让我的应用程序连接到数据库并进行更新之前,如何检查是否有更改 我曾想过在onTextChanged()或posterextchanged()上使用TextChangedListener()和一些boolean,但我不知道具体怎么做 有什么建议吗?多谢各位 我已经尝试了下面的代码,它对我很有效。我现在有这个: public class ProfileAct

我有一个个人资料表格,上面有一些
EditText
,比如姓名、地址、城市等等。我有一个
按钮
,一旦你按下它,就可以保存这些数据

因此,我想知道,在让我的应用程序连接到数据库并进行更新之前,如何检查是否有更改

我曾想过在
onTextChanged()
posterextchanged()
上使用
TextChangedListener()
和一些
boolean
,但我不知道具体怎么做

有什么建议吗?多谢各位


我已经尝试了下面的代码,它对我很有效。我现在有这个:

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
也这样做


谢谢大家

如果您的目标只是检查是否有任何更改,只需将当前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) {
                                             }
                                         }

    );

请发布您尝试过的代码。虽然事件可能会让您知道有人更改了某个值,但他们可能已将其更改回原始值。如果您存储原始值并在保存前比较EditText中的值,则可以确保它们不会将值更改回原始值。如果您有对象,则可以将previos对象保留在内存中,并与新对象进行比较(使用hashcode和equals),如果不一样,则某些对象已更改。Holly。。。这比我想的容易。非常感谢你。很抱歉问了这个可怜的问题。