Java 从ImageVeiw获取可绘制时出现空指针异常
我有: 公共类TestButton扩展ImageButton{ 我有一些代码在以下位置生成空指针异常:Java 从ImageVeiw获取可绘制时出现空指针异常,java,android,nullpointerexception,drawable,Java,Android,Nullpointerexception,Drawable,我有: 公共类TestButton扩展ImageButton{ 我有一些代码在以下位置生成空指针异常: final Drawable temp1 = babyview.getDrawable(); 在此之前,我使用: public void dancebabydance() { babyview = (ImageView) findViewById(R.id.baby); 以下是xml部分: <ImageView android:id="@+id/baby"
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与可绘制的进行比较,看看它们是否相等,以及是否可以将它们更改为新的内容
像这样扩展ImageButton可以吗?我在哪里塞东西?问题在第二部分
babyview = (ImageView) findViewById(R.id.baby);
在类(是否为活动
?)视图中,没有此类视图。这种情况通常是由于以下三种原因之一:
1) 您忘了设置内容视图
2) 在调用setContentView
3) 您在
setContentView
中使用了错误的布局问题在第二部分
babyview = (ImageView) findViewById(R.id.baby);
在类(是否为活动
?)视图中,没有此类视图。这种情况通常是由于以下三种原因之一:
1) 您忘了设置内容视图
2) 在调用setContentView
3) 您在
setContentView
中使用了错误的布局。我建议您使用android:tag
字段设置一个可以比较的字符串。没有其他方法适合您
getDrawable()
只有在代码中调用了setImageDrawable()
时才会有值。
如果您试图获取您在android:src
属性中提供的绘图功能,那么您必须直接从资源中获取,而不能从ImageView
中获取
如果您知道资源id(例如R.id.my_drawable)并希望获得可绘制资源,则可以使用:
Drawable d = getResources().getDrawable(android.R.drawable.my_drawable);
ImageView image = (ImageView)findViewById(R.id.image);
image.setImageDrawable(d);
如果您不知道资源id,请查看答案
但是,您可以获得图像视图的位图。
您可以调用setDrawingCacheEnabled(true)
然后调用getDrawaingCache()
以获取位图
。如果执行此操作,请记住设置setDrawingCacheEnabled(false)
我建议使用android:tag
字段设置一个可以比较的字符串。没有其他方法适合您
getDrawable()
只有在代码中调用了setImageDrawable()
时才会有值。
如果您试图获取您在android:src
属性中提供的绘图功能,那么您必须直接从资源中获取,而不能从ImageView
中获取
如果您知道资源id(例如R.id.my_drawable)并希望获得可绘制资源,则可以使用:
Drawable d = getResources().getDrawable(android.R.drawable.my_drawable);
ImageView image = (ImageView)findViewById(R.id.image);
image.setImageDrawable(d);
如果您不知道资源id,请查看答案
但是,您可以获得图像视图的位图。
您可以调用setDrawingCacheEnabled(true)
然后调用getDrawaingCache()
以获取位图
。如果执行此操作,请记住设置setDrawingCacheEnabled(false)
这可能很愚蠢,但您是否将contentView设置为ImageView所属的任何布局?从何处调用DanceBayDance()
?发布我在回答中提到的那部分内容使用android:tag
设置字符串,并使用该字符串比较图像…您可以将资源id设置为标记值或设置资源名称…是的,我没有在这个类中设置contentView,也就是说,我猜这可能很愚蠢,但您是否将contentView设置为whatever布局您的ImageView是?的一部分,从中调用dancebabydance()
?发布我在回答中提到的那部分内容使用android:tag
设置字符串,并使用该字符串比较图像…您可以将资源id设置为标记值或设置资源名称…是的,我没有在这个类中设置contentView,我想就是这样