在Android Studio中,R.id是自动生成的一个类,在其中定义了所有XML文件中的控件ID。而在switch语句中,case后面只能跟整型常量表达式或枚举常量,不能直接使用R.id作为case的值,因为R.id不是常量。解决这个问题的方法有两种:1. 将R.id转换为整型常量,可以使用以下代码将R.id.xxx转换为整型常量:`...
在Android Studio中,当你遇到case R.id.xxx报错时,通常是因为资源ID不再被视为常量。从Android Gradle Plugin版本8.0开始,资源ID默认为非最终标识(non-final),这导致它们不能在switch语句中用作常量表达式。以下是一些解决此问题的步骤和方法: 1. 确认报错信息的具体内容 报错信息通常会明确指出问题所在,比如“Const...
出现这个问题的原因是Android library中生成的R.java中的资源ID不是常数: @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn_back: onBackPressed(); break; } } 打开library中的R.java,发现确实如此,每一个资源ID都没有被声明为final: public static int main=0x7f030004; ...
aSwitch = (Switch) findViewById(R.id.switch1); aSwitchCompat = (SwitchCompat) findViewById(R.id.switch_compat); text1 = (TextView) findViewById(R.id.text); text2 = (TextView) findViewById(R.id.text1); //设置Switch事件监听 aSwitch.setOnCheckedChangeListener(this); aSwitchCompat.set...
switch语句要求所有大小写标签(例如)R.id.button1在编译时都是常量(这样,值可以直接复制 到.class文件中)。 解决方案很简单:将switch语句转换为if-else语句。幸运的是,这在Eclipse中非常容易。只需将插入符号放在switch关键字上,然后按Ctrl-1(或在Mac上为Cmd-1): Android Studio快捷键switch case 轻松转换为if ...
id.tbtn_open); swh_status = (Switch) findViewById(R.id.swh_status); tbtn_open.setOnCheckedChangeListener(this); swh_status.setOnCheckedChangeListener(this); } @Override public void onCheckedChanged(CompoundButton compoundButton, boolean b) { switch (compoundButton.getId()){ case R.id.tbtn_...
当我们在Android依赖库中使用switch-case语句访问资源ID时会报如下图所示的错误,报的错误是case分支后面跟的参数必须是常数,换句话说出现这个问题的原因是Android library中生成的R.java中的资源ID不是常数: library error 打开library中的R.java,发现确实如此,每一个资源ID都没有被声明为final: libr...
switch - case 用法归纳 1. 2. 3. 4. 5. if语句处理两个分支,处理多个分支时需使用if-else-if结构,但如果分支较多,则嵌套的if语句层就越多,程序不但庞大而且理解也比较困难.深层嵌套的else-if语句往往在语法上是正确的,但逻辑上却没有正确地反映程序员的意图。例如,错误的else-if匹配很容易被忽略。添加新...
二、常见的`switch-case`语句报错及解决方法 1. 类型不匹配 在Java中,`switch`表达式必须是以下几种类型之一:`byte`、`short`、`char`、`int`、枚举类型(enum types)、`String`(从Java 7开始支持)或`Character`、`Byte`、`Short`、`Integer`的包装类(从Java 5开始支持自动拆箱)。如果`switch`表达式的...
switch(arg0.getId()){caseR.id.tv_regist:Intent intent_regist=newIntent(StartActivity.this,RegistActivity.class);startActivity(intent_regist);break;caseR.id.tv_forget:Intent intent_forget=newIntent(StartActivity.this,MobileLoad.class);startActivity(intent_forget);break;caseR.id.login:user_num=et_...