0

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

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 中的更改联系起来?

4

1 回答 1

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,然后将一个publicsetter应用于变量,并在那个setter中通过你创建的某个接口(本质上是数据绑定showButton)更改按钮的可见性,这也可能是一个好主意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);
}
于 2013-10-11T12:14:30.580 回答