静态与非静态碎片

时间:2016-10-25 18:20:40

标签: java android android-fragments static

我正在查看Fragment文档 Google Android Fragments

我一直在使用Android Studio创建的Fragments非静态版 例如:

public class FormsFragment extends Fragment

为什么Google的文档宣称它们是静态的?是什么原因?

public static class DetailsFragment extends Fragment 

2 个答案:

答案 0 :(得分:1)

你的问题似乎是用两种类型对片段进行分类。静态和非静态,但不是,有两种类型的片段StaticDynamic。关键字static并不意味着这是一个静态片段。关键字可能意味着该片段类是一个嵌套的内部类,只能访问顶级类(可能是一个活动)。

答案 1 :(得分:1)

使用片段,您必须遵循Android本身提供的合同。由于框架管理您的活动和片段生命周期,因此它需要能够创建这些类。这是使用公共默认构造函数完成的。此外,还需要将类本身公开。

因此,如果您将片段定义为“普通”类,则不必考虑其他任何内容。如果将其定义为另一个类的内部类,则必须将其声明为静态。否则,该类将具有一个带有外部类型参数的隐式构造函数,因此没有公共默认构造函数来创建片段的新实例。