0

The below process of getting an Bitmap from an imageview is not working in Android 2.3,its working fine in Google nexus. IS there anything to change to work everywhere

ImageView thumbImage =(ImageView) findViewById(R.id.imageView1);

thumbImage.setDrawingCacheEnabled(true);

Bitmap pr = thumbImage.getDrawingCache();

The actual process I am using.

    zoomImage.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        if (thumbImage.getDrawable() != null) {
                            try {

                                thumbImage.setDrawingCacheEnabled(true);
                                Bitmap pre = thumbImage.getDrawingCache();
                                if (zoomDialog == null)
                                    zoomDialog = new Dialog(EachProduct.this,
                                            R.style.ingredienttheme);
                                LayoutInflater lf = getLayoutInflater();
                                final View w = lf.inflate(R.layout.zoom_dialog,
                                        null);
                                zoomDialog.setContentView(w);
                                zoomDialog.getWindow().getAttributes().windowAnimations = R.style.Animation;
                                final ImageView z = (ImageView) zoomDialog
                                        .findViewById(R.id.imageView1);
                                ImageView close = (ImageView) zoomDialog
                                        .findViewById(R.id.imageView2);

                                Bitmap newimage = Bitmap.createScaledBitmap(pre,
                                        displayWidth - 25, displayWidth - 25, true);

                                /*
                                 * ByteArrayOutputStream stream = new
                                 * ByteArrayOutputStream();
                                 * newimage.compress(Bitmap.CompressFormat.PNG, 100,
                                 * stream); byte[] byteArray = stream.toByteArray();
                                 * Bitmap a=BitmapFactory.decodeByteArray(byteArray,
                                 * 0, byteArray.length, o2);
                                 */

                                z.setImageBitmap(newimage);
                                close.setOnClickListener(new OnClickListener() {
                                    @Override
                                    public void onClick(View arg0) {
                                        z.setImageDrawable(null);
                                        // z=null;
                                        zoomDialog.cancel();
                                    }
                                });
                                zoomDialog.show();
                            } catch (OutOfMemoryError e) {
                                // TODO: handle exception
                                System.out.println(e.toString());
                            }
                        }
                    }
                });

Logcat Error:

06-03 14:47:48.114: E/AndroidRuntime(14051): FATAL EXCEPTION: main
06-03 14:47:48.114: E/AndroidRuntime(14051): java.lang.NullPointerException
06-03 14:47:48.114: E/AndroidRuntime(14051):    at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:374)
06-03 14:47:48.114: E/AndroidRuntime(14051):    at com.sparx.maternity.activities.EachProduct$9.onClick(EachProduct.java:510)
06-03 14:47:48.114: E/AndroidRuntime(14051):    at android.view.View.performClick(View.java:2485)
06-03 14:47:48.114: E/AndroidRuntime(14051):    at android.view.View$PerformClick.run(View.java:9089)
06-03 14:47:48.114: E/AndroidRuntime(14051):    at android.os.Handler.handleCallback(Handler.java:587)
06-03 14:47:48.114: E/AndroidRuntime(14051):    at android.os.Handler.dispatchMessage(Handler.java:92)
06-03 14:47:48.114: E/AndroidRuntime(14051):    at android.os.Looper.loop(Looper.java:123)
06-03 14:47:48.114: E/AndroidRuntime(14051):    at android.app.ActivityThread.main(ActivityThread.java:3806)
06-03 14:47:48.114: E/AndroidRuntime(14051):    at java.lang.reflect.Method.invokeNative(Native Method)
06-03 14:47:48.114: E/AndroidRuntime(14051):    at java.lang.reflect.Method.invoke(Method.java:507)
06-03 14:47:48.114: E/AndroidRuntime(14051):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
06-03 14:47:48.114: E/AndroidRuntime(14051):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
06-03 14:47:48.114: E/AndroidRuntime(14051):    at dalvik.system.NativeStart.main(Native Method)
user2376732
  • 379
  • 1
  • 5
  • 14

1 Answers1

0

Try like this:

ImageView thumbImage =(ImageView) findViewById(R.id.imageView1);

thumbImage.setDrawingCacheEnabled(true);

Bitmap pr = Bitmap.createBitmap(thumbImage.getDrawingCache());

thumbImage.setDrawingCacheEnabled(false);

Or if it will not work then try calling thumbImage.buildDrawingCache() before thumbImage.getDrawingCache().

Michał Z.
  • 4,119
  • 1
  • 22
  • 32