添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

在我们自定义ImageView的时候往往会遇到下面这个bug

java.lang.NullPointerException: Attempt to invoke virtual method 'android.graphics.Bitmap android.graphics.drawable.BitmapDrawable.getBitmap()' on a null object reference

感觉摸不到头脑,所以只能看看源码了,点进去看到:

* Gets the current Drawable, or null if no Drawable has been * assigned. * @return the view's drawable, or null if no drawable has been * assigned. public Drawable getDrawable () { if (mDrawable == mRecycleableBitmapDrawable) { // Consider our cached version dirty since app code now has a reference to it mRecycleableBitmapDrawable = null ; return mDrawable;

代码很简单,大概知道是怎么会是了,要找到原因就要先找到mRecycleableBitmapDrawable这个东东,看它是在什么时候赋值的,诶找到了:

* Sets a Bitmap as the content of this ImageView. * @param bm The bitmap to set @android .view.RemotableViewMethod public void setImageBitmap (Bitmap bm) { // Hacky fix to force setImageDrawable to do a full setImageDrawable // instead of doing an object reference comparison mDrawable = null ; if (mRecycleableBitmapDrawable == null ) { mRecycleableBitmapDrawable = new BitmapDrawable(mContext.getResources(), bm); } else { mRecycleableBitmapDrawable.setBitmap(bm); setImageDrawable(mRecycleableBitmapDrawable);

看到了这个方法setImageBitmap(Bitmap bm),是不是很眼熟,那这个方法是啥时候用,它对应的是xml布局文件中的什么东东呢,答案就是android_src=”“;好了看看你的xml代码是用src设置的图片还是background呢,如果是background那返回的就是null了

在我们自定义ImageView的时候往往会遇到下面这个bugjava.lang.NullPointerException: Attempt to invoke virtual method 'android.graphics.Bitmap android.graphics.drawable.BitmapDrawable.getBitmap()' on a null object referen...
一款手机便宜签,实现存储文本和图片。 String title = title_edt.getText().toString(); String content = content_edt.getText().toString(); ContentValues values = new ContentValues(); if (img_iv.get Drawable () != null ) { img_iv.setDrawingCacheEnabled(true); Bitmap bitmap = Bitmap.createBitmap(img_iv.getDrawingCache()); ByteArrayOutputStream bos = new ByteArrayOutputStream(); bitmap.compress(CompressFormat.JPEG, 100, bos); values.put("img", bos.toByteArray()); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); String time = sdf.format(new Date()); db = myHelper.getWritableDatabase(); values.put("title", title); if (content != null ) { values.put("content", content); values.put("time", time); if (!title.equals("")) { db.insert("note", null , values); db.close(); EditActivity.this.finish();
drawable = ContextCompat.get Drawable (getContext(), R.mipmap.xxx); set Drawable ( Drawable TextView.LEFT, drawable , width, height); Customizable attributes xml中定义了以下属性 Define xmlns:app="http://schemas. android .com/apk/res-auto" on root of your xml file <deadline. Drawable TextView android :layout_width="100dp" android :layout_height="wrap_content" android :layout_gravity="center_horizontal" android : drawable Padding="5dp" app:bottom Drawable ="@mipmap/camera" app:bottom Drawable Height="20dp" app:bottom Drawable Width="20dp" app:left Drawable ="@mipmap/camera" app:left Drawable Height="20dp" app:left Drawable Width="20dp" app:right Drawable ="@mipmap/camera" app:right Drawable Height="20dp" app:right Drawable Width="20dp" app:top Drawable ="@mipmap/camera" app:top Drawable Height="20dp" app:top Drawable Width="20dp"/>
context.getResources().get Drawable (R.mipmap.icon_my); 官方推荐调用 context.getResources().get Drawable (R.mipmap.icon_my,theme); 只是过时了,并不影响使用,只是在特殊情况下,在 Android 4.1系统之前加载缩略图可能会出现异常,所以被谷歌废弃了。建议用以下方法代替:
我们经常通过getContext().getResources().get Drawable ()来获取一个问题,当因为 Android 机制使用了缓存机制,直接setColorFilter()修改颜色,可能同时也会改变其他get Drawable ()的颜色。 我们先来看一下get Drawable ()的源码吧。 public Drawable get Drawable (int id, @ Null a...
Android SDK 升級到23后 getResource.getColor(R.color.color_name),getResources().get Drawable (R. drawable . drawable _name)过时不推荐使用; 解决方法: 使用新加入的方法ContextCompat.getColor(context,R.color.color_name)和 Contex
if (userHeaderImage.get Drawable ()== null ){ ToastUtils.show(VertifyInfoActivity.this,"头像信息不存在"); }else { goCamera();
之前代码中获取 Drawable 都是使用如下方法: Drawable Top Drawable One = getResources().get Drawable (R. drawable .icon_test); 但是此方法过时,不推荐使用,那么肯定是有其他替代方法的,经过查找,很多网友都是推荐使用 Drawable get Drawable (int id, Resources.Theme the
Android SDK 升級到 23 之後,getResource.getColor(R.color.color_name) 過時,可以使用新加入的方法 ContextCompat.getColor(context, R.color.color_name) 。
当你这个 Drawable 不受主题影响时 ResourcesCompat.get Drawable (getResources(), R. drawable .name, null ); 当你这个 Drawable 受当前Activity主题的影响时 ContextCompat.get Drawable (getActivity(), R. drawable .name); 当你这个Drawabl
之前使用这个方法的时候看见它过时,认为不会引起错误。在小米,华为,oppo,联想手机上测试也并未产生任何问题。直到有一次公司拿着公司同事的锤子手机(系统版本是4.4.2)。突然发现程序崩溃,查找错误日志提示是get Drawable ()这个方法找不到,才意识到过时也有可能引起问题。随后将它改为谷歌推荐的方法代替。 ContextCompat.get Drawable (context,R.mipmap
转自http://www.cnblogs.com/devinzhang/archive/2012/06/05/2536848.html方法public static Bitmap convertViewToBitmap(View view) { view.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
在将图片用get drawable 的方法转换成bitmap时会出现OOM,下面的方法就是怎么去避免因为这种操作或类似操作而引起的OOM。 public static Bitmap decodeSampledBitmapFromResource(Resources res, int resId,  int reqWidth, int reqHeight) { // First decod
get Drawable ()是 Android 中的一个方法,用于从资源中获取 Drawable 对象。它接受一个资源ID作为参数,并 返回 一个 Drawable 对象。例如,以下代码会从应用程序的资源中获取一个名为"my_ drawable "的 Drawable 对象: Drawable drawable = getResources().get Drawable (R. drawable .my_ drawable ); 请注意,这个方法在API level 22(即 Android 5.1)及以下版本中已经被弃用,取而代之的是使用ContextCompat.get Drawable ()或ViewCompat.get Drawable ()方法。如果您的应用程序需要与较旧的 Android 版本兼容,则可以使用以下代码来获取 Drawable 对象: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { Drawable drawable = getResources().get Drawable (R. drawable .my_ drawable , getTheme()); } else { Drawable drawable = getResources().get Drawable (R. drawable .my_ drawable ); 这样,在API level 22及以下版本中,将使用旧的get Drawable ()方法获取 Drawable 对象,在API level 23及以上版本中,则使用新的get Drawable ()方法获取 Drawable 对象。