我是android程序开发的初学者...但我有一个任务是在android手机中开发示波器..我在调试程序时有一些程序。 我已经使用这些代码设置了示波器的按钮..
run_buton = (ToggleButton) findViewById(R.id.tbtn_runtoggle);
run_buton.setOnClickListener(this);
rb1 = (RadioButton)findViewById(R.id.rbtn_ch1);
rb2 = (RadioButton)findViewById(R.id.rbtn_ch2);
和
public static final int rbtn_ch1 = 0;
public static final int rbtn_ch2 = 0;
public static final int txt_ch1pos = 0;
public static final int txt_ch2pos = 0;
public static final int button_connect = 0;
public static final int WaveformArea = 0;
public static int btn_position_down;
public static int tbtn_runtoggle;
public static int btn_position_up;
btn_pos_up = (Button) findViewById(R.id.btn_position_up);
btn_pos_down = (Button) findViewById(R.id.btn_position_down);
btn_pos_up.setOnClickListener(this);
btn_pos_down.setOnClickListener(this);
我在R.id之后设置所有东西。是一个整数/字段.. 在R文件中显示如下
然而,Eclispe告诉我,我在最后三个字段上有程序......那是“btn_posiion_down”,“tbtn_runtoggle”和“btn_postion_up”.. 它显示错误,说“case表达式应该是常量表达式”...我不明白它意味着什么......脚本的第一句话得到了错误......case R.id.btn_position_up :
if(rb1.isChecked() && (ch1_pos<38) ){
ch1_pos += 1; ch1pos_label.setPadding(0, toScreenPos(ch1_pos), 0, 0);
sendMessage( new String(new byte[] {ADJ_POSITION, CHANNEL1, ch1_pos}) );
}
else if(rb2.isChecked() && (ch2_pos<38) ){
ch2_pos += 1; ch2pos_label.setPadding(0, toScreenPos(ch2_pos), 0, 0);
sendMessage( new String(new byte[] {ADJ_POSITION, CHANNEL2, ch2_pos}) );
}
break;
愿任何人友好地告诉我会发生什么事吗?
答案 0 :(得分:1)
听起来好像您正在使用定义这些ID的库项目。如果是这种情况,则不能将switch语句与这些id一起使用,因为它们不是静态final。
尝试使用if / else语句而不是开关。日食快速修复工具将建议您作为解决问题的方法。