Java 当传感器事件发生变化时,如何将变量增加一次以上?
如您所见,当加速度计z轴值大于12时,我试图增加变量“c”。但我可以一次完成,它会在执行程序后将值0更改为1。但我想收集z轴值大于12的次数Java 当传感器事件发生变化时,如何将变量增加一次以上?,java,android,Java,Android,如您所见,当加速度计z轴值大于12时,我试图增加变量“c”。但我可以一次完成,它会在执行程序后将值0更改为1。但我想收集z轴值大于12的次数 @Override public void onSensorChanged (SensorEvent event) { textView.setText(event.values[0] + ""); textView1.setText(event.values[1] +
@Override
public void onSensorChanged (SensorEvent event) {
textView.setText(event.values[0] + "");
textView1.setText(event.values[1] + "");
textView2.setText(event.values[2] + "");
String s = new String();
s = textView2.getText().toString().trim();
Float t = Float.parseFloat(s);
int c = 0;
if (t > 11) {
c++;
txt.setText(Integer.toString(c));
}
}
此外,可能使用除“textView#”之外更有意义的变量名会使人们不那么痛苦地了解您试图做什么。您可以将变量c定义为字段成员,如下所示:
public class MainActivity {
private int c = 0;
(...)
@Override
public void onSensorChanged (SensorEvent event) {
textView.setText(event.values[0] + "");
textView1.setText(event.values[1] + "");
textView2.setText(event.values[2] + "");
String s = new String();
s = textView2.getText().toString().trim();
Float t = Float.parseFloat(s);
if (t > 11) {
c++;
txt.setText(Integer.toString(c));
}
}
}
不要在onSensorChanged方法中初始化c。使c全球化variable@a_local_nobody这真的很有效。感谢您的更正。一般来说,不是全局变量。但正如正确看到的,c的范围是错误的。它应该是一个成员或类变量。我已经检查了几十年了,但我很确定任何值得一读的关于全局变量声明的教程都包含关于变量范围的信息。如果这是一个真正值得一读的教程,它会告诉您避免使用全局变量(特别是使用了那个非常特殊的名称“c”)并教您封装和面向对象;)哦,是的,如果这真的值得的话,它会教你所有关于反射的知识,以及如何修改字段变异,以便在一个遥远的类的双重模糊实例中,在最糟糕的地方找到一些模糊的字段,但是,嘿,如果你的同事正在这样做的话,也可能是这样的,对吗?:)这真的很有效。
public class MainActivity {
private int c = 0;
(...)
@Override
public void onSensorChanged (SensorEvent event) {
textView.setText(event.values[0] + "");
textView1.setText(event.values[1] + "");
textView2.setText(event.values[2] + "");
String s = new String();
s = textView2.getText().toString().trim();
Float t = Float.parseFloat(s);
if (t > 11) {
c++;
txt.setText(Integer.toString(c));
}
}
}