我找到了一些线程来解释为什么Fragment类应该像这那样是static (而不是非静态内部的)。但无法理解此错误消息的原因:
这个片段类应该是公共的(.)
我使用Android 3.1.2,这是我代码的一部分:
public class MainActivity extends android.support.v7.app.AppCompatActivity {
// ...
}
class DefaultFragment extends android.support.v4.app.Fragment {
// ...
}该片段应该仅用于MainActivity。
编辑: IDE消息中还有其他一些信息。但关于建设者:
从片段文档中: 每个片段都必须有一个空的构造函数,因此可以在恢复其活动状态时实例化它。强烈建议子类没有带有参数的其他构造函数,因为当片段被重新实例化时不会调用这些构造函数;相反,参数可以由带有setArguments(Bundle)的调用方提供,然后由片段用getArguments()检索。
发布于 2019-03-25 14:52:18
这也是因为内部类包含对其父类的引用,这可能会泄漏活动。
非静态内部类确实包含对其父类的引用。使片段内部类非静态的问题是,始终保持对活动的引用。GarbageCollector无法收集您的活动。因此,您可以‘泄漏’的活动,例如,方向改变。因为片段可能仍然存在,并被插入到新的活动中。
检查详细答复并尝试制作片段
https://stackoverflow.com/questions/51359472
复制相似问题