gpt4 book ai didi

android - 创建 BaseFragment 并在 ChildFragment 中扩展此 Fragment

转载 作者:太空宇宙 更新时间:2023-11-03 11:54:36 25 4
gpt4 key购买 nike

我不知道这是否是重复的问题,但我没有找到任何解决方案。

问题是,有一个屏幕在所有屏幕中具有相似的 View ,屏幕是 fragment 化的。

所以,我想创建一个基础 fragment ,并想在所有子 fragment 中扩展这个基础 fragment 。

我在谷歌上找到了演示示例,但我没有找到任何解决方案。

我不知道从哪里开始。

请帮帮我。

我找到了这个链接,但不是很清楚:

  1. Fragments inheritance Android

  2. When do I need a base activity and base fragment?

基础 fragment .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 中还有另外两个 View ,没有显示...

enter image description here

最佳答案

抽象类方法 ?

我明白你想在这里做什么(继承)。但正如@hobokent 所指出的,仅通过继承 BaseClass 不会在 BaseClass 布局之上包含您的 childView 布局。有很多方法可以解决这个问题

让我们研究一下这个解决方案。

  • 创建一个抽象类来扩展 Fragment 类(这将是基类)。

  • 创建一个将返回布局的抽象方法。

  • 在 ChildClass 中为您的抽象方法提供实现。

这是代码 fragment 。

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 布局创建一个占位符,并使用 child.add(base_layout) 在 childLayout 中添加 BaseClass 布局。同样,这只是另一种设计解决方案。
您还可以在 Activity 布局中放置一个通用布局,并在 fragment 的 Activity 占位符中添加 fragment 。有很多可能的解决方案。

我没有任何特定于您的要求的代码,但这是我为 TabLayout 实现此方法的示例,其中每个选项卡都是具有不同布局的不同 Fragment。
Github full code sample .

关于android - 创建 BaseFragment 并在 ChildFragment 中扩展此 Fragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46150146/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com