我一直在尝试自学如何使用 android studio,但遇到了障碍,这段代码有什么问题吗?它不会让我使用 draw-able 设置为图像吗?
public void obama(){
Switch s = (Switch)findViewById(R.id.obamaswitch);
s.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ImageView p = (ImageView)findViewById(R.id.obamahere);
p.setImageDrawable(R.drawable.brock);
}
});
}
最佳答案
你需要知道什么是参数以及setImageDrawable
和setImageResource
的区别。
不同的方法需要不同的参数。我指的是不同类型 的参数。在这种情况下,setImageDrawable
需要一个 Drawable
类型的参数,但您给它的是一个 int
类型的参数。所以这就是它不起作用的原因。
不知道你知不知道。 Android 中的所有资源 ID(即 R.xxx.xxx
东西)都是整数!因此,当您在实际需要 Drawable
时尝试传递整数时,它当然会失败。
你需要的是要么
1) 找到一个接受整数作为参数的方法。或者;
2) 使用资源id获取Drawable
对象。
对于1),可以使用setImageResource
方法。只需将单词 Drawable
替换为 Resource
并且不要更改任何其他内容!
如果您更喜欢 2),您可以使用此方法使用资源 ID 获取可绘制对象。
Drawable myDrawable = getResources().getDrawable(<insert your id here>);
然后你可以传递myDrawable
作为参数:
p.setImageDrawable(myDrawable);
关于Android Studio - setImageDrawable 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34700388/