android - 我可以用构建器模式制作抽象 fragment 类吗?

标签 android android-fragments builder-pattern

我使一些 fragment 扩展了 topFragment 类。但它有可变参数 - 自定义监听器、一些模型等。

public abstract class TopFragment extend Fragment {
    public interface OnCustomListener {
        void onCustomListener();
    }
    protected OnCustomListener onCustomListener;
    protected int importantValue;
    protected String importantString;

    protected abstract void doSomething();

    public static class Builder() {
        protected OnCustomListener onCustomListener;
        protected int importantValue;
        protected String importantString;

        public Builder(OnCustomListener onCustomListener) {
            this.onCustomListener = onCustomListener;
        }

        public Builder setValue(int value) {
            this.importantValue = value;
            return this;
        }

        public Builder setString(String value) {
            this.importantString = value;
            return this;
        }
    }
}

这是第二个 fragment 类

public class SecondFragment extend TopFragment {
    @Override
    protected void doSomething() {
        // do something.
    }
}

public class ThirdFragment extend TopFragment {
    @Override
    protected void doSomething() {
        // do something.
    }
}

TopFragment fragment = new SecondFragment(); 有用。那么如何用builder创建继承 fragment 类的实例呢?

最佳答案

绑定(bind)到 Builder 的类的外部环境的实现,有一个私有(private)的 Constructor,它接受一个 Builder 对象作为参数,例如

public class ThirdFragment extend TopFragment {
    @Override
    protected void doSomething() {
        // do something.
    }

   private ThirdFragment(Builder builder) {
      // use the members of builder to build your object
   } 
}

Builder 本身有一个调用该构造函数的 build() 方法。例如

    public ThirdFragment build() {
        return new ThirdFragment(this);
    }

现在 Fragment 既不能有私有(private)构造函数也不能有带参数的构造函数,所以你不能真正使用 Builder 模式。

关于android - 我可以用构建器模式制作抽象 fragment 类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34201431/

相关文章:

kotlin - 如何提高此Kotlin代码的可读性?

java - 构建器模式是否适用此要求?

java - Android:TextView 未更新

android - 在 cordova 中升级 Android 平台时出错

android - 通过 PendingIntent 问题发送 EXTRA 数据

android - ViewPager、getChildFragmentManager() 和 getFragmentManager()

android - 让Fragments使用相同的方法

Android DialogFragment 进度条

java - 如何使用生成器来处理不同长度的输入?

android - 如何使 EditText 仅接受 IP 地址作为输入?