Android 片段没有正确实例化
我在使用支持库实现实例化程序中的片段时遇到问题。以下是我尝试执行的任务的简要说明,以及我的一些尚未取得成果的尝试: 我的应用程序的UI可能会根据用户偏好进行更改。为了做到这一点,我将为每个不同的布局使用一个片段,并按照用户的指示在给定的时间替换UI中的活动片段。以下是我尝试(但失败)的一些方法:Android 片段没有正确实例化,android,android-layout,Android,Android Layout,我在使用支持库实现实例化程序中的片段时遇到问题。以下是我尝试执行的任务的简要说明,以及我的一些尚未取得成果的尝试: 我的应用程序的UI可能会根据用户偏好进行更改。为了做到这一点,我将为每个不同的布局使用一个片段,并按照用户的指示在给定的时间替换UI中的活动片段。以下是我尝试(但失败)的一些方法: 我已经尝试在活动中添加片段作为非静态内部类。只要用户不旋转设备,这种方法就有效。用户旋转设备后,应用程序立即崩溃(纵向->横向旋转和横向->纵向旋转都是如此)。在使用模拟器检查问题时,我得到了一个实例
- 我已经尝试在活动中添加片段作为非静态内部类。只要用户不旋转设备,这种方法就有效。用户旋转设备后,应用程序立即崩溃(纵向->横向旋转和
。在使用模拟器检查问题时,我得到了一个实例化异常。我查了一下,想得到一些帮助,这让我想到:横向->纵向旋转都是如此)
- 将片段实现为静态内部类。当片段启动时,它将扩展其布局,然后从活动的控制流的后面开始,我可以对片段的子视图进行操作(特别是,向按钮添加侦听器)。不幸的是,这不起作用,因为我无法使用
引用片段的子视图。关于在非静态上下文中引用静态对象的内容。我再次检查了SO,这导致我:[frag\u name].getView().findViewById()
- 将片段作为独立于活动的单独类实现。这似乎是developer.android.com上的开发文档所推荐的。执行此操作后,一切似乎都可以正常编译,但当我尝试引用片段的子视图时(再次使用
,我得到了一个NullPointerException。当我在代码中添加System.out.println()语句以确切了解发生了什么时,我发现片段中onCreateView中的print语句永远不会被触发,这意味着onCreateView永远不会被触发[frag\u name].getView().findViewById())
谢谢。想明白了。事实证明,为了做我想做的事情,我必须将活动注册为每个片段的侦听器,并在这两个片段之间来回传递“ready to enable buttons”(准备启用按钮)消息。对于任何使用此问题进行进一步研究的人,关于如何做的指南位于Android开发者指南中,此处:请发布活动代码。@jeet:活动大约有400行,我更愿意将其保留在公共领域之外;你到底需要看到代码的哪一部分?@user1420101:我从中复制了代码。特别是示例片段。我已经更改了一些变量的名称,但除此之外,代码就是它的精确副本。