0

我是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;

谁能告诉我会发生什么??

4

1 回答 1

1

听起来好像您正在使用定义这些 id 的库项目。如果是这种情况,则不能对这些 id 使用 switch 语句,因为它们不是静态最终的。

尝试使用 if/else 语句而不是 switch。Eclipses Quick-Fix 工具会建议您作为解决问题的方法。

于 2012-02-14T16:34:54.277 回答