安卓 - 编程方式更改EditTextPreference对话框中正按钮的文本

4

我想改变`EditTextPreference`中的`Dialog`的`positiveButtonText`,但是尝试了以下操作却没有成功:

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

prefWatcher 是以下内容:

private TextWatcher prefWatcher = new TextWatcher() {

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count,
            int after) {

    }

    @Override
    public void afterTextChanged(Editable s) {
        Log.i(TAG_LOG, "Updating the positive button text");
        mUrlPreference.setPositiveButtonText("Download");
    }
};

当我更改EditText中的文本时,日志将被打印,但是Positive按钮文本不会更改。这里有什么我错过的东西吗?我的最初想法是我必须刷新对话框的视图层次结构,但我在API中没有看到任何方法来执行此操作。你有什么想法我在这里错过了什么?
1个回答

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
}

谢谢!但是你是怎么得到确定按钮的id的? - 500865
@500865 BUTTON_POSITIVE 最初被称为BUTTON1。该ID在此处提到。 - Dheeraj Vepakomma

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接