在使用和(&)运算符的开关情况下出现重复的大小写错误

时间:2013-11-01 06:21:37

标签: android c++ touch

switch (v.getId() & event.getAction()) {
    case R.id.report_stype & MotionEvent.ACTION_DOWN:
        spinnertype();

        break;
    case R.id.report_sapprove & MotionEvent.ACTION_DOWN:

        break;

    }

两个案例都显示重复错误......要修复的方法吗?

1 个答案:

答案 0 :(得分:1)

你确定要按位并使用&操作

实际上并不能保证两个不同的值。

例如,

ACTION_DOWN可能具有值为1的位,这两个位掩盖了两种情况下的ID。

尝试重新思考逻辑。

您可以这样做:

switch (v.getId() ) {
case R.id.report_stype:
    if( event.getAction() == MotionEvent.ACTION_DOWN)
       spinnertype();

    break;
case R.id.report_sapprove:
    if( & event.getAction() ==  MotionEvent.ACTION_DOWN)
        // do whatever

    break;

}

希望这会有所帮助。