Android - 以编程方式更改EditTextPreference对话框的正面按钮文本

时间:2012-03-19 15:15:20

标签: android android-preferences android-edittext android-dialog

我正在尝试更改`EditTextPreference中positiveButtonText的{​​{1}}。我试过以下但没有成功:

Dialog

// The reference to the preference in the view heirarchy mUrlPreference = (EditTextPreference) getPreferenceScreen().findPreference(pref); // Add a textwatcher mUrlPreference.getEditText().addTextChangedListener(prefWatcher); 如下:

prefWatcher

当我更改EditText中的文本时,会打印日志,但正面按钮文本不会更改。这里有什么我想念的吗?我最初的想法是,我必须刷新对话框的视图层次结构,但我没有在API中看到任何方法来执行此操作。关于我在这里缺少什么的想法?

1 个答案:

答案 0 :(得分:1)

根据setPositiveButtonText()的文档,更新的文本将显示在后续对话框中。所以要实际影响按钮,请改为:

@Override
public void afterTextChanged(Editable s) {
    mUrlPreference.setPositiveButtonText("Download");

    Button button = (Button) mUrlPreference.getDialog().findViewById(android.R.id.button1);
    button.setText("Download");
    button.invalidate(); // if necessary
}