Android 不同屏幕布局中的不同视图

Android 不同屏幕布局中的不同视图,android,android-layout,Android,Android Layout,我有为平板电脑设计的应用程序,现在我想为手机做布局,但我的手机布局有不同的视图,在某些方面有不同的功能,我面临这样的问题:layout-sw600dp/layout_a.xml(平板电脑)有2个按钮和layout-sw320dp/layou a.xml(手机)现在代码中只有一个侦听器,我设置了两个侦听器,应用程序崩溃,出现空指针异常,因为布局中缺少第二个按钮。有什么建议我如何为这些屏幕实现不同的功能吗?设置一个布尔标志(例如isUsingTabletLayout),并在加载平板电脑布局时,在布尔

我有为平板电脑设计的应用程序,现在我想为手机做布局,但我的手机布局有不同的视图,在某些方面有不同的功能,我面临这样的问题:
layout-sw600dp/layout_a.xml(平板电脑)
有2个按钮和
layout-sw320dp/layou a.xml(手机)
现在代码中只有一个侦听器,我设置了两个侦听器,应用程序崩溃,出现空指针异常,因为布局中缺少第二个按钮。有什么建议我如何为这些屏幕实现不同的功能吗?

设置一个布尔标志(例如isUsingTabletLayout),并在加载平板电脑布局时,在布尔检查中包装视图绑定和侦听器设置。如果为false,代码将跳过手机中不存在的视图

使用
getIdentifier()
方法。如果返回非零值,则资源存在,否则不存在

String button_id="your_button_id";
//where button id is defined as android:id="@+id/your_button_id"

String resource_type= "id";

getResources().getIdentifier(button_id, resource_type, getApplicationContext().getPackageName());

第一步:。知道加载了哪个布局,您可以使用下面提到的方法来完成

链接:

第二步:

通过知道加载了哪些布局,可以为按钮启用代码

如果(布局==表格布局){ 加载按钮1和按钮2。 }否则{ 仅加载按钮1。 }

希望,这会奏效


谢谢。

为什么不检查空值?例如,使用Kotlin safe operator(?),您可以检查平板电脑布局中是否存在视图,而手机布局中是否存在视图。