实现View状态设置

时间:2013-10-11 11:50:40

标签: java android user-interface view

我有一个有按钮的片段。在创建片段时,我想从片段中获取UiSettings实例并更改是否应显示该按钮。你可以看到here的想法。 所以我的代码是:

class MyFragment extends Fragment{
    private Button button;
    private UiSettings settings;

    public getUiSettings(){
        return settings;
    }
}

class UiSettings{
    private boolean showButton = true;
    //setters and getters go here
}

我的问题是如何根据UiSettings触发按钮可见性,以及如何将按钮可见性状态连接到UiSettings中的更改?

1 个答案:

答案 0 :(得分:1)

我会覆盖onResume()中的Fragment并获取UiSettings实例并将值应用于

之类的函数
button.setVisibility(uiSettings.showButton ? View.VISIBLE : View.GONE);

总的来说,你会添加你的代码

@Override
public void onResume() {
    super.onResume();
    button.setVisibility(uiSettings.showButton ? View.VISIBLE : View.GONE);
}

UiSettings的课程之外设置Fragment课程也是一个好主意,然后将public设置器应用于showButton变量,在该setter中,通过您创建的某个界面更改Fragment's按钮的可见性(基本上是对这两个界面进行数据绑定)。

界面可能类似于

public interface Binding {
    dataChanged();
}

然后UiSettings

public class UiSettings {
    public Binding binder;
    private boolean showButton;

    public void setShowButton(boolean showButton) {
        this.showButton = showButton;
        if (binder != null) {
            binder.dataChanged();
        }
    }

    public boolean getShowButton() {
        return showButton;
    }
}

然后您的片段会implement Binding添加到其中

@Override
public void dataChanged() {
    button.setVisibility(uiSettings.getShowButton() ? View.VISIBLE : View.GONE);
}