gpt4 book ai didi

android - 是否可以在 XML 中传递构造函数参数?

转载 作者:太空宇宙 更新时间:2023-11-03 13:03:46 28 4
gpt4 key购买 nike

我正在编写一个扩展 Fragment 的类,我想在 XML 文件中使用它。对于我的类,我有一个构造函数,它采用一个参数来指定 fragment 应如何布局其 UI。

我想在 XML 中使用我的类,但也想指定此布局参数,但是否可以将其包含在 XML 中?

最佳答案

fragment 需要有无参数的构造函数。这是因为可以多次创建 fragment 实例。引用 docs :

Every fragment must have an empty constructor, so it can be instantiated when restoring its activity's state. It is strongly recommended that subclasses do not have other constructors with parameters, since these constructors will not be called when the fragment is re-instantiated; instead, arguments can be supplied by the caller with setArguments(Bundle) and later retrieved by the Fragment with getArguments().

不幸的是,您不能在 XML 中使用建议的 setArguments,但可以采用不同的方式来执行此操作,具体取决于您计划传递给 fragment 的可能参数集。例如,您可以适本地子类化您的 fragment :

public class MyPortraitFragment extends MyFragment {
public MyPortraitFragment() {
Bundle args = MyFragment.getPortraitArgsBundle();
setArguments(args);
}
}

public class MyLandscapeFragment extends MyFragment {
public MyLandscapeFragment() {
Bundle args = MyFragment.getLandscapeArgsBundle();
setArguments(args);
}
}

然后,您可以在 XML 中使用 MyLandscapeFragmentMyPortraitFragment,具体取决于您要使用的 fragment 变体。

关于android - 是否可以在 XML 中传递构造函数参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7710656/

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