Java 我的活动如何在两种布局上运行?

Java 我的活动如何在两种布局上运行?,java,android,Java,Android,基本上,我有两个xml布局。一个是小屏幕尺寸,另一个是大屏幕尺寸。在我的小屏幕XML布局中,我实际上只是复制大屏幕XML中的内容(保持所有内容不变,例如:id名称等),只更改文本大小和按钮大小。然后,在我的活动代码中使用一个条件如下调用它们: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (condition){ setConten

基本上,我有两个xml布局。一个是小屏幕尺寸,另一个是大屏幕尺寸。在我的小屏幕XML布局中,我实际上只是复制大屏幕XML中的内容(保持所有内容不变,例如:id名称等),只更改文本大小和按钮大小。然后,在我的活动代码中使用一个条件如下调用它们:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (condition){
      setContentView(R.layout.bigScreenSize);
    } else{
      setContentView(R.layout.smallScreenSize);
}
我的问题是,为什么我的应用程序没有崩溃,而是正常运行?这是因为两个XML布局上的属性ID相同吗?谢谢

为什么我的应用程序没有崩溃,而是正常运行

这是可行的,因为它确实可以使用两种布局。您可以为单个活动使用尽可能多的布局,但不能同时使用

这是因为两个XML布局上的属性ID相同吗

这不是因为您引用的是相同的属性ID,而是因为您引用的是两种xml布局中可用的现有ID

为什么我的应用程序没有崩溃,而是正常运行

这是可行的,因为它确实可以使用两种布局。您可以为单个活动使用尽可能多的布局,但不能同时使用

这是因为两个XML布局上的属性ID相同吗

这不是因为您引用的是相同的属性ID,而是因为您引用的是两种xml布局中可用的现有ID

为什么我的应用程序没有崩溃,而是正常运行

因为所需的视图(文本/按钮)在xml中可用。换句话说,所有id在两种XML中都可用

如果id值或任何视图丢失/不匹配,应用程序将抛出错误

为什么我的应用程序没有崩溃,而是正常运行

因为所需的视图(文本/按钮)在xml中可用。换句话说,所有id在两种XML中都可用


如果id的值或任何视图丢失/不匹配,应用程序将抛出错误。

您针对大小屏幕的方法与谷歌的建议不一致

为了针对不同的屏幕大小优化ui,您确实需要不同的布局,但它们必须相同(就id而言),并且只能包含在不同的布局目录中

更多信息

为什么我的应用程序没有崩溃,而是正常运行


为什么你希望你的应用程序崩溃?让id指向不同的小部件/视图是完全正常的。只要一个人不同时指向两种不同的观点。在您的情况下,一次只使用两个布局中的一个(大或小)。因此,android正确地识别了我在布局中所指的视图。

您针对小屏幕和大屏幕尺寸的方法与谷歌的建议不一致

为了针对不同的屏幕大小优化ui,您确实需要不同的布局,但它们必须相同(就id而言),并且只能包含在不同的布局目录中

更多信息

为什么我的应用程序没有崩溃,而是正常运行


为什么你希望你的应用程序崩溃?让id指向不同的小部件/视图是完全正常的。只要一个人不同时指向两种不同的观点。在您的情况下,一次只使用两个布局中的一个(大或小)。因此,android可以正确识别我在布局中引用的视图。

我建议使用配置限定符来解决这样的差异-
是因为在两个XML布局上都有相同的属性ID吗?
是的-它拥有您尝试访问的所有内容。但正如@JohnO'Reilly提到的,你做错了。在Android上,您可以使用各种机制来解决这个问题-无需使用
if()
i建议使用配置限定符来解决类似的差异-
是因为两个XML布局上的属性ID相同吗
是的-它拥有您尝试访问的所有内容。但正如@JohnO'Reilly提到的,你做错了。在Android上,你有一些机制可以帮你解决这个问题-不需要
if()
sThank you very thank you very thank you