我需要将主Activity中的值传递给自定义View。
在主要活动中,我有一个SensorEventListener,所以我不断听光传感器。在onSensorChanged()方法中,我读取了值,每次更改为自定义视图时都需要发送此值。
我不知道哪个是实现这一目标的最佳途径。
更新 -
在主要活动上引用SensorEventListener的方法:
@Override
public void onSensorChanged(SensorEvent event) {
float lumnes = event.values[0];
GaugeView.setHandTarget(lumnes);
}
方法我必须在自定义视图中发送值:
public void setHandTarget(float temperature) {
if (temperature < minDegrees) {
temperature = minDegrees;
} else if (temperature > maxDegrees) {
temperature = maxDegrees;
}
handTarget = temperature;
handInitialized = true;
invalidate();
}
我不能使用静态引用因为我不能调用invalidate()
答案 0 :(得分:4)
你可以这样做:
public CustomView extends View {
...
private float[] values; //this
//setter
public void setValues(float[] values) {
this.values = values;
}
}
public class MyActivity extends Activity implements SensorEventListener {
private CustomView mCustomView;
...
@Override
public void onSensorChanged(SensorEvent event) {
float[] values = event.values;
mCustomView.setValues(values); //pass the collected values to the view via setter
}
}
答案 1 :(得分:0)
在没有看到任何代码的情况下,我可以提供的最佳建议是在视图中创建属性,并使其可以从Main Activity类访问。在检查传感器的方法中,您只需将创建的自定义View属性设置为值即可。与直接访问它的价值不同。
假设您的值是浮点数,请将以下内容添加到自定义视图类:
public float sensorValue;
从传感器事件监听器访问它,如下所示:
CustomView.sensorValue = sensorValue;