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