Android 如何清除BitmapDrawable.getBitmap()';关于空对象引用关于空对象引用错误
我使用这个库来模糊图像,在正常的活动中一切正常,最近我尝试在自定义GridView中使用这个库,结果出现了这个错误 空对象引用上的android.graphics.Bitmap android.graphics.drawable.BitmapDrawable.getBitmap() 这是我的自定义GridView适配器代码,用于在Glide的帮助下模糊从url获取的图像:Android 如何清除BitmapDrawable.getBitmap()';关于空对象引用关于空对象引用错误,android,android-imageview,nullreferenceexception,bitmapimage,bitmapdrawable,Android,Android Imageview,Nullreferenceexception,Bitmapimage,Bitmapdrawable,我使用这个库来模糊图像,在正常的活动中一切正常,最近我尝试在自定义GridView中使用这个库,结果出现了这个错误 空对象引用上的android.graphics.Bitmap android.graphics.drawable.BitmapDrawable.getBitmap() 这是我的自定义GridView适配器代码,用于在Glide的帮助下模糊从url获取的图像: image.setVisibility(View.INVISIBLE); Glide.with(getApp
image.setVisibility(View.INVISIBLE);
Glide.with(getApplicationContext()).load(Uri.parse(lmap.get((int)_position).get("pic").toString())).into(image);
t = new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
image.setVisibility(View.VISIBLE);
image.setBlur(15);
}
});
}
};
_timer.schedule(t, (int)(2000));
}
注:image.setBlur(15)代码>是库中的函数
以下是我的自定义GridView布局xml:
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<androidx.cardview.widget.CardView
android:id="@+id/cardview1"
android:layout_width="200dp"
android:layout_height="250dp"
android:clickable="true"
android:focusable="true"
app:cardCornerRadius="10dp"
app:cardElevation="2dp">
<RelativeLayout
android:id="@+id/linear1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<com.jgabrielfreitas.core.BlurImageView
android:id="@+id/image"
android:focusable="false"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
app:radius="24"/>
<LinearLayout
android:id="@+id/linear2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="vertical"
android:layout_alignBottom="@+id/image">
<LinearLayout
android:id="@+id/linear4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/name_age"
android:focusable="false"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="8dp"
android:text="Peter, 43"
android:textSize="16sp"
android:textColor="#FFFFFF"
android:translationY="10.0dp"
android:shadowColor="#000000"
android:shadowDx="1.5"
android:shadowDy="1.3"
android:shadowRadius="1.6"/>
</LinearLayout>
<LinearLayout
android:id="@+id/linear6"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal"
android:translationY="-5.0dp">
<LinearLayout
android:id="@+id/linear3"
android:layout_width="10dp"
android:layout_height="10dp"
android:layout_marginLeft="10dp"
android:padding="8dp"
android:background="#C5E1A5"
android:orientation="vertical"/>
<TextView
android:id="@+id/time"
android:focusable="false"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="8dp"
android:text="Last seen recently"
android:textSize="14sp"
android:textColor="#FFFFFF"
android:shadowColor="#000000"
android:shadowDx="1.5"
android:shadowDy="1.3"
android:shadowRadius="1.6"/>
</LinearLayout>
</LinearLayout>
</RelativeLayout>
</androidx.cardview.widget.CardView>
</LinearLayout>
xmlns:android=”http://schemas.android.com/apk/res/android"
xmlns:app=”http://schemas.android.com/apk/res-auto"
xmlns:tools=”http://schemas.android.com/tools"
android:layout\u width=“匹配父项”
android:layout\u height=“match\u parent”
android:orientation=“vertical”>
注意:由于我从一个url获取图像,我已经删除了app:src=“drawable/img”
在花了几乎一整天的时间使用不同的方法来解决错误后,我终于找到了一种方法,它就像ABC一样简单,我只需要在图像上使用一个try-catch语句。“我的GridView适配器”中的代码片段现在看起来如下所示:
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
try{
image.setBlur(15);
}catch(Exception e){
}
}
});
}
};
_timer.schedule(t, (int)(2000)); ```