2013-10-11 84 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); 
}