2013-10-11 5 views
0

버튼이있는 Fragment가 있습니다. 조각을 만들 때 조각에서 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

나는 당신의 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); 
} 

Fragment 클래스 외부에서 UiSettings 클래스를 만든 다음에 public 설정기를 적용하는 것도 좋은 방법 일 수 있습니다.3210 변수를 사용하고 setter에서 사용자가 만들 인터페이스를 통해 버튼의 가시성을 변경합니다 (본질적으로 두 가지 데이터 바인딩).

인터페이스는 다음

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