我有一个带有按钮的片段。创建片段时,我想从片段中获取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中的更改?

最佳答案

我会在您的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变量,然后在该设置器中更改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);
}

08-04 03:19