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