Moh*_*med 4 android android-fragments
我不知道这是否是重复的问题,但我没有找到任何解决方案.
问题是,有一个屏幕在所有屏幕上都有类似的视图,屏幕是碎片.
所以,我想创建一个基本片段,并希望在所有子片段中扩展此基本片段.
我在google上找到了演示示例,但我找不到任何解决方案.
我不知道从哪里开始.
请帮我.
我找到了这个链接,但不太清楚:
BaseFragment.java
public class BaseFragment extends Fragment {
  public BaseFragment() {
    // Required empty public constructor
  }
  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    return inflater.inflate(R.layout.fragment_base, container, false);
  }
}
ChildFragment.Java
public class ChildFragment extends BaseFragment{
  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    return inflater.inflate(R.layout.fragment_child, container, false);
  }
}
现在,fragment_child布局中有一个TextView.当我运行应用程序时显示,但fragment_base中有另外两个视图,但没有显示...
Roh*_*ngh 10
抽象类方法?
我明白你在做什么(继承).但正如@hobokent指出的那样,仅通过继承BaseClass将不会在BaseClass Layout之上包含您的childView布局.有很多方法可以解决这个问题
让我们来看看这个解决方案.
创建一个扩展Fragment类的抽象类(这将是BaseClass).
制作一个将返回布局的抽象方法.
在ChildClass中为您的抽象方法提供实现.
这是代码片段.
BaseClass的
public abstract class BasicFragment extends Fragment {
  public void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
  }
  public View onCreateView(LayoutInflater inflater,ViewGroup parent, Bundle savedInstanseState)
   {
      View view = provideYourFragmentView(inflater,parent,savedInstanseState);
      return view;
   }
   public abstract View provideYourFragmentView(LayoutInflater inflater,ViewGroup parent, Bundle savedInstanceState);
}
ChildClass
public class ImageFragment extends BasicFragment{
  @Override
  public View provideYourFragmentView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.image_fragment,parent,false);
    //Now specific components here (you can initialize Buttons etc)
    return view;
   }
}
对于您的特定要求,如果您希望在子类布局中显示相同的布局.您可以创建一个返回布局的方法,也可以在子布局中为BaseClass Layout创建占位符,并使用child.add(base_layout)在childLayout中添加BaseClass布局.这又是另一种设计解决方案.
您还可以在Activity布局中放置一个公共布局,并在片段的Activity占位符中添加片段.有很多可能的解决方案.
我没有任何特定于您的要求的代码,但这里是我为TabLayout实现此方法的示例,其中每个选项卡是具有不同布局的不同片段.
Github完整代码示例.
| 归档时间: | 
 | 
| 查看次数: | 8541 次 | 
| 最近记录: |