使用 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/