Pio*_*ski 1 java android android-fragments
在我的Fragment
我有一个静态newInstance
方法,它接受一些参数,把它们放入Bundle
,Fragment
用这个创建新的Bundle
:
public static Fragment newInstance(final CommandWithNumber command) {
final CallsFragment fragment = new CallsFragment();
final Bundle args = new Bundle();
args.putSerializable(SHOW_DETAILS_COMMAND, command);
fragment.setArguments(args);
return fragment;
}
Run Code Online (Sandbox Code Playgroud)
有没有办法阻止new CallsFragment()
在代码中的其他地方调用并强制开发人员使用newInstance
方法?
当然,我不能CallsFragment
私有,因为操作系统需要公开的.如果有人试图用构造函数创建一个实例,也许有办法显示警告?
你不应该使用Fragment的构造函数,系统使用它来恢复配置更改.必须有一个在Fragment类中不带参数的公共构造函数
Fragment的所有子类都必须包含公共无参数构造函数.框架通常会在需要时重新实例化一个片段类,特别是在状态恢复期间,并且需要能够找到此构造函数来实例化它.如果无参数构造函数不可用,则在状态还原期间的某些情况下将发生运行时异常.
来自文档
编辑:在评论部分进一步讨论并理解你想要做什么之后,你应该添加一个@Deprecated
带有javadocs的注释,说明为什么你不应该在内部使用这个构造函数,如下所示:
/**
* this should <b>NEVER</b> be used, always use the newInstance method instead
**/
@Deprecated
public CallsFragment() {
// EMPTY METHOD
}
Run Code Online (Sandbox Code Playgroud)