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。。。这比我想的容易。非常感谢你。很抱歉问了这个可怜的问题。