我在构建布局时遇到了麻烦。我的情况是这样的:
我有一个Activity
运行并且具有为普通和横向定义的布局,但它们是在运行时从onCreate()
构建的。
在onCreate()
中,我调用setContentView(my_normal_layout)
,然后将其添加到使用大量addView()
等处,并且工作正常。但是我也在尝试构建我的横向布局,但是当我尝试使用findViewById()
获取我的基本布局时,问题就是res/layout-land
中存储的布局文件的一部分,它返回{{1} }。
现在我已经查看了具有null返回问题的人的解决方案,但人们建议必须先执行null
。但是我不想将内容视图设置为我的横向布局,我只希望在旋转屏幕时发生这种情况(它自动执行此操作?)。
那么有没有人知道如何解决使用setContentView
并更改未设置为内容视图的视图的问题?
我可以发布所需的任何代码行,但我希望这些解释足够好。 谢谢,
约什
答案 0 :(得分:4)
如果我理解正确,您在两个不同的布局文件中有不同的UI元素。
如果是这种情况,那么您仍然可以将布局文件命名为相同(/res/layout
中的一个和/res/layout-land
中的一个)并使用setContentView(...)
自动对正确的布局文件进行充气。< / p>
之后,您需要知道的是当前方向(纵向或横向),以便知道使用findViewById(...)
调用哪些代码位。
您可以使用...
找到方向getWindowManager().getDefaultDisplay().getOrientation();
如果您使用的是API 8(Android v2.2)或更高版本,则不推荐使用上述内容,但您应拨打getRotation()
而不是getOrientation()
。