0

ボタンのあるフラグメントがあります。フラグメントを作成するときに、フラグメントから UiSettings インスタンスを取得し、ボタンを表示するかどうかを変更したいと考えています。ここでアイデアを得ることができます。だから私のコードは次のとおりです。

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 の変更に関連付ける方法です。

4

1 に答える 1

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適用し、そのセッターで、作成するインターフェイスを介してボタンの可視性を変更することもお勧めします (基本的にデータバインディング二つ)。publicshowButtonFragment'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);
}
于 2013-10-11T12:14:30.580 に答える