1

我的 AlertDialog 包含一个button并且3 text fields在满足某些条件时会自动填充一些文本。

当所有文本字段都不为空时,我将按钮的默认文本更改为Assign.

文本已更改,但在 UI 中,仍显示原始文本。

我正在使用类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()没有成功。

4

1 回答 1

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()将调用该方法,该方法再次将 button 的值设置为Look Up

于 2013-10-24T07:07:27.113 回答