Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在optionMenu中使用映射类型时,大小写表达式必须为常量表达式错误_Android_Switch Statement_Optionmenu - Fatal编程技术网

Android 在optionMenu中使用映射类型时,大小写表达式必须为常量表达式错误

Android 在optionMenu中使用映射类型时,大小写表达式必须为常量表达式错误,android,switch-statement,optionmenu,Android,Switch Statement,Optionmenu,在任何情况下,它都会给我错误案例表达式必须是常量表达式。我正在Google Maps API V2上开发应用程序,我已经将地图类型添加到选项菜单(onOptionItemSelected) 尝试将开关转换为if-else..,但出现相同的错误 @Override public boolean onOptionsItemSelected(MenuItem item) { int itemId = item.getItemId(); if (itemId ==

在任何情况下,它都会给我错误案例表达式必须是常量表达式。我正在Google Maps API V2上开发应用程序,我已经将地图类型添加到选项菜单(onOptionItemSelected)

尝试将开关转换为if-else..,但出现相同的错误

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int itemId = item.getItemId();
        if (itemId == R.id.mapTypeNormal) {
            mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
        } else if (itemId == R.id.mapTypeTerrain) {
            mMap.setMapType(GoogleMap.MAP_TYPE_TERRAIN);
        } else if (itemId == R.id.mapTypeSatellite) {
            mMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
        } else if (itemId == R.id.mapTypeHybrid) {
            mMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
        } else if (itemId == R.id.gotoCurrentLocation) {
            gotoCurrentLocation();
        } else {
            return super.onOptionsItemSelected(item);
        }
        return super.onOptionsItemSelected(item);

    }

问题是,您的所有R.id值实际上并不像它们应该是最终的那样。在R文件中,您会发现它们类似于
publicstaticintsample=0x7f035054

解决这个问题的方法是使用if语句。您第二次提供的代码应该可以工作。如果您删除了switch语句并使用了那些if语句,则不可能得到“case表达式必须是常量表达式”


尝试重新启动IDE并重建项目,switch语句肯定会被if语句替换

请更详细地描述错误。。。
@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int itemId = item.getItemId();
        if (itemId == R.id.mapTypeNormal) {
            mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
        } else if (itemId == R.id.mapTypeTerrain) {
            mMap.setMapType(GoogleMap.MAP_TYPE_TERRAIN);
        } else if (itemId == R.id.mapTypeSatellite) {
            mMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
        } else if (itemId == R.id.mapTypeHybrid) {
            mMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
        } else if (itemId == R.id.gotoCurrentLocation) {
            gotoCurrentLocation();
        } else {
            return super.onOptionsItemSelected(item);
        }
        return super.onOptionsItemSelected(item);

    }