如何将重复片段转换为一个来处理它们

时间:2018-01-24 14:07:52

标签: android android-fragments

我有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用于管理所有案例,使用方法或类似的帮助程序。

3 个答案:

答案 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(){}
}