android - 使用 newInstance 模式的 fragment 继承

标签 android performance android-fragments inheritance fragment

使用 newInstance 模式进行 fragment 继承的正确方法是什么?

例如,如果我们有一个 fragment MyFragment 继承自另一个具有 newInstance 模式的 fragment SuperFragment --> https://stackoverflow.com/a/28855715/5125212

public class SuperFragment extends Fragment{
    public static SuperFragment newInstance(int var1, boolean var2){
        SuperFragment fragment = new SuperFragment();
        Bundle b = new Bundle();
        b.putInt("my_var1", var1);
        b.putBoolean("my_var2", var2);
        fragment.setArguements(b);
        return fragment
    }
// All other methods
}

这会在“super”上出现错误:

public class MyFragment extends SuperFragment{
    public static MyFragment newInstance(int var1, boolean var2){
        return super.newInstance(int var1, var2);
    }
// All other methods
}

这会在构造函数上出现错误,因为我们应该避免使用非默认构造函数:

public class MyFragment extends SuperFragment{
    public MyFragment(int var1, boolean var2){
        newInstance(var1, var2);
    } 
// All other methods
}

我发现这没有任何错误,但我不喜欢它,因为它似乎是递归获取的:

public class MyFragment extends SuperFragment{
    public static SuperFragment newInstance(int var1, boolean var2){
        return newInstance(var1,var2);
    }
}

最佳答案

找到它!

super fragment :

public class SuperFragment extends Fragment{
    public static Bundle setArgs(int var1, boolean var2){
        Bundle b = new Bundle();
        b.putInt("my_var1", var1);
        b.putBoolean("my_var2", var2);
        return b;
    }
// All methods you want in the super fragment, so they will be in the 
// inherit fragment too
}

继承 fragment :

public class MyFragment extends SuperFragment{
    public static MyFragment newInstance(int var1, boolean var2){
        MyFragment fragment = new MyFragment();
        fragment.setArguments(setArgs(var1,var2));
        return fragment;
    }
// All other methods that you only want them on the inherit (this)     
// fragment
}

关于android - 使用 newInstance 模式的 fragment 继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34812218/

相关文章:

android - CameraCharacteristics 中的 get(CameraCharacteristics.CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES) 因操作系统版本而异

android - 如何在带有 fragment 的 Activity 中显示 RecyclerView 和 CardView 布局?

android - fragment 崩溃 : java. lang.IllegalArgumentException:找不到 View

java - 二进制 XML 文件行 #14 : error inflating class fragment//showing maps

java - 显示在第二个 Activity 中设置的第一个 Activity 的数据

android - EditText 不接受数字

c++ - 避免在 map/unordered_map 中进行多次查找

python - 数组中的索引,使其前缀和等于其后缀和 - 最佳解决方案

c - 在函数内使用 const 和 static const 的速度有区别吗?

android - 在两个 fragment 之间传递数据