Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 片段没有正确实例化_Android_Android Layout - Fatal编程技术网

Android 片段没有正确实例化

Android 片段没有正确实例化,android,android-layout,Android,Android Layout,我在使用支持库实现实例化程序中的片段时遇到问题。以下是我尝试执行的任务的简要说明,以及我的一些尚未取得成果的尝试: 我的应用程序的UI可能会根据用户偏好进行更改。为了做到这一点,我将为每个不同的布局使用一个片段,并按照用户的指示在给定的时间替换UI中的活动片段。以下是我尝试(但失败)的一些方法: 我已经尝试在活动中添加片段作为非静态内部类。只要用户不旋转设备,这种方法就有效。用户旋转设备后,应用程序立即崩溃(纵向->横向旋转和横向->纵向旋转都是如此)。在使用模拟器检查问题时,我得到了一个实例

我在使用支持库实现实例化程序中的片段时遇到问题。以下是我尝试执行的任务的简要说明,以及我的一些尚未取得成果的尝试:

我的应用程序的UI可能会根据用户偏好进行更改。为了做到这一点,我将为每个不同的布局使用一个片段,并按照用户的指示在给定的时间替换UI中的活动片段。以下是我尝试(但失败)的一些方法:

  • 我已经尝试在活动中添加片段作为非静态内部类。只要用户不旋转设备,这种方法就有效。用户旋转设备后,应用程序立即崩溃(纵向->横向旋转和
    横向->纵向旋转都是如此)
    。在使用模拟器检查问题时,我得到了一个实例化异常。我查了一下,想得到一些帮助,这让我想到:

  • 将片段实现为静态内部类。当片段启动时,它将扩展其布局,然后从活动的控制流的后面开始,我可以对片段的子视图进行操作(特别是,向按钮添加侦听器)。不幸的是,这不起作用,因为我无法使用
    [frag\u name].getView().findViewById()
    引用片段的子视图。关于在非静态上下文中引用静态对象的内容。我再次检查了SO,这导致我:

  • 将片段作为独立于活动的单独类实现。这似乎是developer.android.com上的开发文档所推荐的。执行此操作后,一切似乎都可以正常编译,但当我尝试引用片段的子视图时(再次使用
    [frag\u name].getView().findViewById())
    ,我得到了一个NullPointerException。当我在代码中添加System.out.println()语句以确切了解发生了什么时,我发现片段中onCreateView中的print语句永远不会被触发,这意味着onCreateView永远不会被触发

所以现在,我被卡住了。我做错了什么?这一点的精确实现并不像从经验中学习一些东西那样重要,这样我才能更好地进行Android开发,因此,如果单独的类比静态类好,或者相反,我并不在乎我使用哪一个


谢谢。

想明白了。事实证明,为了做我想做的事情,我必须将活动注册为每个片段的侦听器,并在这两个片段之间来回传递“ready to enable buttons”(准备启用按钮)消息。对于任何使用此问题进行进一步研究的人,关于如何做的指南位于Android开发者指南中,此处:

请发布活动代码。@jeet:活动大约有400行,我更愿意将其保留在公共领域之外;你到底需要看到代码的哪一部分?@user1420101:我从中复制了代码。特别是示例片段。我已经更改了一些变量的名称,但除此之外,代码就是它的精确副本。