gpt4 book ai didi

android - android资源id应该用于非布局代码吗?

转载 作者:太空狗 更新时间:2023-10-29 12:47:08 24 4
gpt4 key购买 nike

android资源ID通常用作获取/修改 XML 定义的布局组件的一种方式。将它们纯粹用作 Android 应用程序中任何 Java 代码的唯一标识符是否可以接受?例如:

使用 Android 资源 ID

ids.xml

<item name="sensor_pressure" type="id"/>
<item name="sensor_humidity" type="id"/>
<item name="sensor_precision_gas" type="id"/>

传感器.java

public Sensor(int sensorId) {
initializeSensor(sensorId);
}

private void determineSensorType(int sensorId) {
switch(sensorId) {
case R.id.sensor_pressure:
intializePressureSensor();
break;
case R.id.sensor_humidity:
initializeHumiditySensor();
break;
// etc...
}
}

或者用纯 Java 做事会更可取吗?例如:

仅使用 Java

传感器.java

public Sensor(int sensorId) {
initializeSensor(sensorId);
}

enum SensorType {
PRESSURE, HUMIDITY, PRECISION_GAS
}

private void determineSensorType(SensorType sensorType) {
switch(sensorType) {
case SensorType.PRESSURE:
intializePressureSensor();
break;
// etc...
}
}

我的示例的最佳解决方案:

来自下面的 MaciejGórski。使用接口(interface),可以解决完全摆脱对唯一 ID 的需求所带来的问题。

public interface Sensor {

}

public class HumiditySensor implements Sensor {

public HumiditySensor() {
init();
}
}

最佳答案

面向对象的方式怎么样?

public interface Sensor {

}

public class HumiditySensor implements Sensor {

public HumiditySensor() {
init();
}
}

您可以避免在代码中的许多地方使用难看的 switch 语句。

关于android - android资源id应该用于非布局代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16924100/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com