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