2013-10-11 58 views
0

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

给我们您的喜好布局? –

+0

@Flextra没有偏好布局。请按照上面的链接了解这个想法。 –

+0

可以帮忙吗? http://stackoverflow.com/questions/17549908/android-google-api-failed-to-load-map-fixed –

回答

1

我会覆盖在你的FragmentonResume()并有抢UiSettings实例和价值的东西,如

button.setVisibility(uiSettings.showButton ? View.VISIBLE : View.GONE); 

适用于功能,因此在总,你会添加到您的代码

@Override 
public void onResume() { 
    super.onResume(); 
    button.setVisibility(uiSettings.showButton ? View.VISIBLE : View.GONE); 
} 

Fragment的课程之外制作UiSettings课程也可能是一个好主意,然后将public设置器应用到showButton变量,并在该设置器中通过您创建的某个界面(实质上是数据绑定这两个界面)来更改按钮的可见性。

的界面看起来可能像

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; 
    } 
} 

然后implementBinding和你的片段会添加到它

@Override 
public void dataChanged() { 
    button.setVisibility(uiSettings.getShowButton() ? View.VISIBLE : View.GONE); 
}