将代码放在Activity或Fragment中以处理方向更改?

时间:2017-07-30 12:33:17

标签: android android-layout fragment

我有一个Activity和两个Fragment布局和类 我需要做的就是当我更改屏幕方向时,以不同方式重新组织相同的内容。

我的问题是我应该把代码放在哪里? 哪个类Activity类或Fragment类?

如果我在Fragment类中编码,我应该在两个类中放置代码,或者如果我使用main Activity,我如何从每个布局中找到对象(如TextViews)?

2 个答案:

答案 0 :(得分:0)

您将代码放在视图所在的位置......真的很简单。

res/layout-land应保留完全相同的视图ID。

例如,MainActivity会自动为您加载res/layout/activity_main.xml res/layout-land/activity_main.xml,具体取决于方向。

如果您不更改任何ID值,

findViewById将正常运作

有一整个documentation page on this。请注意,他们使用保留的碎片,但这不是必需的。

另外Android Studio: Creating landscape layouts

答案 1 :(得分:-1)

基于评论到目前为止我所理解的内容。

你有一个活动,你有两个片段。这两个片段具有不同的布局,您希望根据设备的方向显示这些布局。

这个问题有两种方法

1)您希望使用片段

实现

为Fragment创建一个抽象类,在基类中放置常用功能,并在不同的Fragment子类中提供不同的实现

您可以参考this

2)第二种方法

可以在不使用片段的情况下以更简单的方式实现。 创建 layout-land 目录,并将布局XML文件的横向版本放在该目录中。

在stackoverflow中查看此thread

希望它有所帮助。