【问题标题】:Implementing View state settings实现视图状态设置
【发布时间】:2013-10-12 00:49:24
【问题描述】:

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

【问题讨论】:

  • 给我们您的偏好布局?
  • @Flextra 没有偏好布局。请按照上面的链接了解这个想法。
  • @Flextra 恐怕距离我要找的地方有 1000 英里。
  • 对不起,朋友。我通过了

标签: java android user-interface view


【解决方案1】:

我会在你的Fragment 中覆盖onResume(),然后抓取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);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-14
    • 1970-01-01
    • 2018-06-02
    • 2014-12-23
    • 2015-02-19
    • 2020-04-21
    相关资源
    最近更新 更多