如何在对话框关闭操作时以编程方式更新自定义的DialogPreference布局?

时间:2018-07-08 23:03:43

标签: android

尝试在自定义TextView布局上添加DialogPreference时,我尝试在关闭对话框框并将新值保存到首选项时更改此TextView的文本。

为此,我尝试保存优先级的覆盖onBindView方法的根视图:

@Override
protected void onBindView(View view) {
    super.onBindView(view);
    // saving reference to view of preference
    parentView = view;
}

,然后使用它在TextView上更新我的notifyChanged实例:

@Override
protected void notifyChanged() {
    super.notifyChanged();
    if (parentView != null) {
        // finding target element
        View tagView = parentView.findViewWithTag("price_value");
        // setting new value to custom TextView
        ((TextView) tagView).setText(getText());
    }

}

但是,直到我将片段切换到其他片段,然后再从活动切换回首选项片段后,文本才会更新。

更改片段的代码:

private void _loadMainFragment(Fragment mainFragment) {
    FragmentManager mFragmentManager = getFragmentManager();
    FragmentTransaction mFragmentTransaction =
            mFragmentManager.beginTransaction();
    mFragmentTransaction.replace(R.id.main_container, mainFragment);
    mFragmentTransaction.addToBackStack(null);
    mFragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
    mFragmentTransaction.commit();
}

谁能给我提示TextView为什么不第一次更新或在何处挖掘?

1 个答案:

答案 0 :(得分:0)

必须致电:

tagView.invalidate(); tagView.requestLayout();

在应更新的视图上。