gpt4 book ai didi

android - fragment 继承Android

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:58:15 25 4
gpt4 key购买 nike

是否可以/建议在Android中让不同的 fragment 相互继承?

初始化已在父类(super class)中初始化的事物并向其添加事物的最佳方法是什么? (-> 例如像在其构造函数中使用 super() 然后初始化其他对象的普通子类)

我在网上查了一下,但没有找到太多这方面的信息。我知道可以 return super.onCreateView() 但之后你不能初始化其他对象/ View ....

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{

super.onCreateView()???


//initialize other objects here

//you have to return a view ...
}

最佳答案

是的,这是允许的。为什么不?例如,如果您有许多显示列表的 fragment ,您可以将所有常用方法放在 FragmentList 中,然后继承其他 fragment ,仅添加独特的方法或在需要时覆盖 super 中的方法。

但是覆盖 onCreateView() 可能会增加布局处理的难度。在我最近的项目中,我在父类(super class)中创建了一个方法 inflateFragment(),如下所示:

BaseFragment.java

protected View inflateFragment(int resId, LayoutInflater inflater, ViewGroup container) {
View view = inflater.inflate(resId, container, false);
FrameLayout layout = (FrameLayout)view.findViewById(R.id.fragment_layout);
/*
* Inflate shared layouts here
*/
. . .
setHasOptionsMenu(true);
return view;
}

由于该结构,每个 fragment 布局资源都包装在 FrameLayout 中,id = fragment_layout。但您可以自由使用 LinearLayout 或您需要的任何父 View 。

然后在继承的 fragment 中:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflateFragment(R.layout.my_fragment, inflater, container);
/*
* Do things related to this fragment
*/
...
return view;
}

关于android - fragment 继承Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26049114/

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