[英]How To Set Image Bitmap From External Class?
我有一个主要的自动生成的类。 我想将简单的ic_launcher png绘制到我在xml中声明的图像视图中。
我的主班:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyCanvas can = new MyCanvas(this);
//ImageView img = (ImageView) findViewById(R.id.imageView1);
//img.setImageBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher));
}
}
我上的课:
public class MyCanvas extends View{
public MyCanvas(Context context) {
super(context);
ImageView img = (ImageView) findViewById(R.id.imageView1);
img.setImageBitmap(BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_launcher));
}
}
您会注意到我注释掉了在我的主要活动中设置位图的过程。 那是因为那是一次考验。 该代码在main活动中工作完美,但在其他类中失败。 我不知道logCat的工作原理,但是我看到“空指针异常”。 我几乎肯定是错误是当我加载ImageView时。
我尝试了这个:context.findViewById(R.id.imageView1); 无济于事。
请注意,图像的ID为imageView1。
要从MyCanvas
类更改ImageView图像, MyCanvas
使用MyCanvas类构造函数在Activity中将ImageView
实例初始化为后发送ImageView
实例:
public MyCanvas(Context context,ImageView img) {
super(context);
img.setImageBitmap(BitmapFactory.decodeResource(context.getResources(),
R.drawable.ic_launcher));
}
并从Activity发送ImageView实例:
setContentView(R.layout.activity_main);
ImageView img = (ImageView) findViewById(R.id.imageView1);
MyCanvas can = new MyCanvas(this,img);
在MyCanvas中,您使用的是View类的findViewById,它从该视图子级中搜索,这与您的活动类不同。
例如,您可以在MainActivity 1st中找到根布局,并将其作为参数传递给MyCanvas。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.