编码风格:两个活动,大部分代码相同但内容视图不同
Coding Style: Two activities with mostly same code but different content view
我有两个具有相同代码的活动。主要区别在于它们具有不同的内容视图(因此有一些不同的元素)。
推荐什么?我应该让它像在两个活动中一样,还是应该让它成为一个 activity 并在每次有关于视图的内容时使用 if else 查询来解决它(例如 setcontentview 和一些(5)其他视图相关代码块)?
例如
if (isLandscape) { //landscape looks different than portrait
setContentView(R.layout.activity_landscape);
} else {
setContentView(R.layout.activity_normal);
}
这是推荐的/好的编码风格吗?
如果您要为纵向和横向设置不同的视图,这可以通过使用 layout-land 目录的资源文件并在横向目录中添加具有相同名称的新 activity 布局来完成。
因此,布局和 layout-land 文件夹中都会有一个 activity.xml 文件。
不过,为了回答您的一般问题,在您的 activity 中使用成员变量来区分您的两种情况效果很好。然后,当您需要使用 if/else 逻辑根据此变量的状态执行某些操作时。
例如,在平板电脑上使用带有独特视图容器的单独布局。您可以检查 if(findViewById(R.id.tablet_container)) != null)
然后根据此将 isTabletView 成员变量设置为 true 或 false。任何时候您需要根据应用程序是 运行 在平板电脑上还是 phone 上执行某些操作时,您都可以引用此变量。
我有两个具有相同代码的活动。主要区别在于它们具有不同的内容视图(因此有一些不同的元素)。
推荐什么?我应该让它像在两个活动中一样,还是应该让它成为一个 activity 并在每次有关于视图的内容时使用 if else 查询来解决它(例如 setcontentview 和一些(5)其他视图相关代码块)?
例如
if (isLandscape) { //landscape looks different than portrait
setContentView(R.layout.activity_landscape);
} else {
setContentView(R.layout.activity_normal);
}
这是推荐的/好的编码风格吗?
如果您要为纵向和横向设置不同的视图,这可以通过使用 layout-land 目录的资源文件并在横向目录中添加具有相同名称的新 activity 布局来完成。
因此,布局和 layout-land 文件夹中都会有一个 activity.xml 文件。
不过,为了回答您的一般问题,在您的 activity 中使用成员变量来区分您的两种情况效果很好。然后,当您需要使用 if/else 逻辑根据此变量的状态执行某些操作时。
例如,在平板电脑上使用带有独特视图容器的单独布局。您可以检查 if(findViewById(R.id.tablet_container)) != null)
然后根据此将 isTabletView 成员变量设置为 true 或 false。任何时候您需要根据应用程序是 运行 在平板电脑上还是 phone 上执行某些操作时,您都可以引用此变量。