我是Android开发的新手。我一直在玩自定义视图,我有一些可点击的图像。
当我从视图构造函数
运行这些代码时ImageView image_view = new ImageView(getContext());
Drawable image = getResources().getDrawable(image_id);
image_view.setImageDrawable(image);
image_view.setClickable(true);
image_view.setOnClickListener(MyView.this);
addView(image_view);
我可以看到图像,我可以按下它们来触发OnClick处理程序。
但是,如果我在视图构造和膨胀后运行相同的代码。我得到其中一个场景
1)我可以看到图像但无法触发click事件(主线程在遇到运行时异常后报告为暂停)
2)应用程序似乎运行但我只得到一个黑屏。
3)应用程序似乎运行,在绘制它挂起的背景颜色后面包(在构造函数中设置背景颜色)
为什么在构建后添加图像视图是错误的?我描述的三种情景的根本原因是什么?
编辑这是我如何获得其他(失败)方案的示例:
protected boolean HandelMessge(Message msg) {
UICommands cmsg = UICommands.get(msg.what);
boolean bRetval = false;
switch (cmsg) {
case AddViews:
ImageView image_view = new ImageView(getContext());
Drawable image = getResources().getDrawable(image_id);
image_view.setImageDrawable(image);
image_view.setClickable(true);
image_view.setOnClickListener(MyView.this);
addView(image_view);
msg.recycle();
bRetval = true;
break;
}
return bRetval;
}