4

我在构建布局时遇到问题。我的情况是这样的:

我有一个Activity可以运行并为普通和横向定义的布局,但它们是在运行时从onCreate().

onCreate()我进行调用时setContentView(my_normal_layout),然后将其添加到使用大量addView()'s 等并且工作正常。但是,我也在尝试构建我的横向布局,但有一个问题,当我尝试并使用findViewById()来获取我的基本布局时,这是我存储在其中的布局文件的一部分,res/layout-land它返回null

现在我已经研究了针对有空返回问题的人的解决方案,但人们建议setContentView必须首先执行。但是我不想将内容视图设置为我的横向布局,我只希望在屏幕旋转时发生这种情况(它会自动执行此操作吗?)。

那么有谁知道我如何解决使用findViewById和更改未设置为内容视图的视图的问题?

我可以发布任何需要的代码行,但我希望解释足够好。谢谢,

乔什

4

1 回答 1

4

如果我理解正确,您在两个不同的布局文件中有不同的 UI 元素。

如果是这种情况,那么您仍然可以将布局文件命名为相同的(一个 in/res/layout和一个 in /res/layout-land)并用于setContentView(...)自动膨胀正确的文件。

之后,您只需要知道当前方向是什么(纵向或横向),以便知道要调用哪些代码findViewById(...)

您可以使用...找到方向

getWindowManager().getDefaultDisplay().getOrientation();

如果您使用的是 API 8 (Android v2.2) 或更高版本,则上述内容已被弃用,您应该调用getRotation()而不是getOrientation().

请参阅Display.getOrientation()

于 2012-04-23T23:34:11.703 回答