我有一个个人资料的表单,其中有一些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
一样。
谢谢大家!
答案 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) {
}
}
);