我有: 公共类TestButton扩展了ImageButton {....
我有一些代码在:
生成空指针异常 final Drawable temp1 = babyview.getDrawable();
在此之前我使用:
public void dancebabydance() {
babyview = (ImageView) findViewById(R.id.baby);
这是xml部分:
<ImageView
android:id="@+id/baby"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:src="@drawable/dbaby2"
/>
我理想地尝试将此dbaby2与drawable进行比较,看看它们是否相等,以及是否将它们更改为新的。
这样可以像这样扩展ImageButton吗?我在哪里填充?
答案 0 :(得分:2)
问题出在第二部分
babyview = (ImageView) findViewById(R.id.baby);
在课堂上(它是一个Activity
?)视图没有这样的视图。它通常是由于以下三个原因之一而发生的:
1)你忘了setContentView
2)在调用setContentView
3)您在setContentView
答案 1 :(得分:1)
我建议您使用android:tag
字段设置可以比较的String
。没有其他方法适合你。
getDrawable()
, setImageDrawable()
将只有一个值。
如果您想获得android:src
属性中提供的drawable,那么您必须直接从ImageView
无法获得的资源中获取它。
如果您知道资源ID(例如R.id.my_drawable)并想要获得Drawable,您可以使用:
Drawable d = getResources().getDrawable(android.R.drawable.my_drawable);
ImageView image = (ImageView)findViewById(R.id.image);
image.setImageDrawable(d);
如果您不知道资源ID,请查看答案here。
但是,您可以获得Bitmap
的{{1}}。
您可以致电ImageView
,然后致电setDrawingCacheEnabled(true)
获取getDrawaingCache()
。如果您这样做,请记住设置Bitmap
。