Android Studio报错cannot find symbol method SetImageResource(int)求解决
修复ImageView切换图片的编译错误
嘿,这个问题其实是个很容易忽略的小细节——Java是严格区分大小写的编程语言,你这里刚好踩了这个坑!
错误原因
Android Studio提示的cannot find symbol method SetImageResource(int),本质是你把ImageView的方法名写错了:正确的方法名是setImageResource()(首字母为小写s),而你写成了大写的S。在Java中,大小写不同会被识别为完全不同的方法,所以编译器找不到你调用的SetImageResource。
修复后的完整代码
package com.kmsmartapps.test5; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.ImageView; public class MainActivity extends AppCompatActivity { public void clickIM(View view) { ImageView image = (ImageView) findViewById(R.id.imview); // 把SetImageResource改成setImageResource(首字母小写) image.setImageResource(R.drawable.logo); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } }
额外优化建议
为了让代码更高效,你可以把ImageView的初始化移到onCreate方法中,避免每次点击按钮都执行findViewById:
package com.kmsmartapps.test5; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.ImageView; public class MainActivity extends AppCompatActivity { private ImageView imageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 提前初始化ImageView imageView = findViewById(R.id.imview); } public void clickIM(View view) { imageView.setImageResource(R.drawable.logo); } }
其他检查点
- 确认
R.drawable.logo确实存在于你的项目res/drawable(或对应分辨率的drawable目录)中,避免后续出现资源找不到的运行时错误 - 如果升级到Android Studio 3.0后还有其他兼容问题,可以检查项目是否正确配置了支持库(不过这个问题和版本升级无关,纯粹是大小写拼写错误)
内容的提问来源于stack exchange,提问作者Kamel Mezni
相关产品推荐
相关产品推荐

