我的AlertDialog包含button
和3 text fields
,当满足特定条件时会自动填充一些文字。
当所有文本字段都为非空时,我将按钮的默认文本更改为Assign
。
文本已更改,但在用户界面中,它仍显示原始文本。
我正在使用课程TextWatcher
来观看三个字段中的文字并更改按钮的文字。
我的简短代码:
private class LocalTextWatcher implements TextWatcher {
@Override
public void afterTextChanged(Editable s) {
//the three text fields
String equipNumText = equipnumbertext.getText().toString().trim();
String plateNumText = licenseplatetext.getText().toString().trim();
String vinNumtext = vintext.getText().toString().trim();
if(!equipNumText.equals("") && !plateNumText.equals("") && !vinNumtext.equals(""))
{
//the button
lookupButton = (Button)findViewById(R.id.lookupbtn);
System.out.println("Default Button value"+lookupButton.getText()); //Look Up
lookupButton.setText("Assign");
//lookupButton.invalidate();
//lookupButton.refreshDrawableState();
System.out.println("Button value after change"+lookupButton.getText()); //Assign
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
}
虽然我的输出显示按钮值发生了变化,但我的 AlertDialog UI 未随更改而更新。
我还使用了lookupButton.invalidate()
OR / AND lookupButton.refreshDrawableState()
但没有成功。
答案 0 :(得分:0)
这很奇怪,但是正确的是,文本的更改会触发对活动的重写onCreate()
方法的调用,这再次将lookupButton的值设置为Look Up
。
拥有以下代码行:
@Override
public void onCreate(Bundle savedInstanceState) {
.......
.......
TextWatcher watcher = new LocalTextWatcher();
equipnumbertext.addTextChangedListener(watcher);
licenseplatetext.addTextChangedListener(watcher);
vintext.addTextChangedListener(watcher);
lookupButton.setText("Look Up");
.......
.......
}
private class LocalTextWatcher implements TextWatcher {
@Override
public void afterTextChanged(Editable s) {
.......
.......
}
在更改三个字段的文本时,调用onCreate()
方法,再次将按钮的值设置为Look Up
。