我有8个彼此相似的片段。我想制作一个通用片段来管理所有这些。我不清楚如何实现这个想法。
除了布局和2或3种方法之外,我的片段具有相同的代码。所以,我认为最好的方法是将它放在一个片段中。
最好的方法是什么。
片段1。
public class Fragment1 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.lm_fragment, container, false);
}
public void method(){}
}
片段2。
public class Fragment2 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.lm_fragment, container, false);
}
public void method2(){}
public void method3(){}
}
片段X ......
每个片段都具有相同的结构,只在每个片段的方法中进行更改。
我想这样做:
General Fragment用于管理所有案例,使用方法或类似的帮助程序。
答案 0 :(得分:0)
使用任何键如int值并将该值传递给片段的getInstance()menthod,然后在onCreateView()中获取该值并对相应的布局进行膨胀。问题解决
答案 1 :(得分:0)
在基础片段类中添加一个
的抽象方法public int layoutId() {
return R.layout.fragment2_layout;
}
在您的子类中重写该方法并返回相应的布局。
在onCreateView中,您将使用layoutId()方法。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(layoutId(), container, false);
}
答案 2 :(得分:0)
继承。
EG。创建一个包含所有常用方法的BaseFragment。
然后,所有其他具有特殊方法的专用片段类都会扩展此BaseFragment。
例如
public class BaseFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.lm_fragment, container, false);
}
public void commonMethod(){}
}
public class SpecialFragment extends BaseFragment {
public void specialMethod2(){}
public void specialMethod3(){}
}