我一直在努力教自己如何使用Android工作室,但我遇到了障碍,这段代码有什么问题?它不会让我使用绘图设置为图像?
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);
}
});
}
答案 0 :(得分:13)
您需要知道什么是参数以及setImageDrawable
和setImageResource
之间的差异。
不同的方法需要不同的参数。我的意思是不同的类型参数。在这种情况下,setImageDrawable
需要Drawable
类型的参数,但您为其指定了int
类型的参数。这就是为什么它不起作用。
我不知道你是否知道这一点。 Android中的所有资源ID(即R.xxx.xxx
东西)都是整数!因此,当您尝试在实际需要Drawable
时传递整数时,它当然无法执行此操作。
你需要的是
1)找到一个接受整数作为参数的方法。或;
2)使用资源ID获取Drawable
对象。
对于1),您可以使用setImageResource
方法。只需将Drawable
替换为Resource
,然后不做任何其他更改!
如果您更喜欢2),您可以使用此方法使用资源ID获取drawable。
Drawable myDrawable = getResources().getDrawable(<insert your id here>);
然后您可以将myDrawable
作为参数传递:
p.setImageDrawable(myDrawable);
答案 1 :(得分:2)
getResources()。getDrawable()已弃用的API22。您应该使用
ContextCompat.getDrawable(context, R.drawable.name_icon)
或
ResourcesCompat.getDrawable(resources, R.drawable.name_icon, null)
答案 2 :(得分:1)
你可以试试这个:
p.setImageDrawable(getResources().getDrawable(R.drawable.brock));
答案 3 :(得分:0)
把&#34; brock&#34;可绘制文件夹中的图像并替换此行
p.setImageDrawable(R.drawable.brock);
使用:
p.setImageResource(R.drawable.brock);