**Note : (For Nerds) Don't mark it as a duplicate question.
- Yes I know what's a
NullPointerException
is. - yes I have tried
view.getDrawingCache
returns null answers from Stackoverflow.
I am trying to develop a drawing application for tablets alone. I have created a custom view which is used for drawing. The custom view is included inside an ScrollView
to make the user scroll image if it's too large.
activity_drawing.xml
<RelativeLayout
android:id="@+id/container"
android:layout_marginLeft="@dimen/activity_correction_answer_horizontal_margin"
android:layout_marginRight="@dimen/activity_correction_answer_horizontal_margin"
android:layout_width="match_parent"
android:layout_height="match_parent">
<in.com.hourglass.views.ImageScroll
android:layout_centerInParent="true"
android:id="@+id/image_scroll"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<in.com.hourglass.views.DrawView
android:id="@+id/draw_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</FrameLayout>
</in.com.hourglass.views.ImageScroll>
</RelativeLayout>
so when the drawing over the view was done, the user can save the image and thinks drawn on Canvas
.
I am resizing the image and attach it to custom view as Bitmap
and save them as a single image. This whole process works fine Samsung Tablet 10.1.
But when I tried testing the same in lower screen device samsung Note 8.0 . view.getDrawingCache()
is giving me a null Bitmap
.
I have debugged and checked the width and height of the customview, scrollview they have specified width and height, and there is a bitmap present in customview as well.
I reuse Bitmap
whenever possible to reduce app heap memory usage.
I know, i have to do something with this warning :
W/View: View too large to fit into drawing cache, needs 4380332 bytes, only 4096000 available
Error Log:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: in.com.hourglassPID: 10456
java.lang.NullPointerException: Attempt to invoke virtual method 'int android.graphics.Bitmap.getWidth()' on a null object reference
at android.graphics.Bitmap.createBitmap(Bitmap.java:614)
at in.com.hourglass.views.DrawView.getCorrectedBitmapWithoutResizing(DrawView.java:449)
at in.com.hourglass.activities.DrawingActivity.saveAnswerSheet(DrawingActivity.java:842)
at in.com.hourglass.activities.DrawingActivity.navigateNext(DrawingActivity.java:426)
at in.com.hourglass.activities.DrawingActivity.access$500(DrawingActivity.java:89)
at in.com.hourglass.activities.DrawingActivity$ToolIconClick.onClick(DrawingActivity.java:362)
at android.view.View.performClick(View.java:4789)
at android.view.View$PerformClick.run(View.java:19881)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5294)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)
Code Used to get Resized Bitmap
public class DrawView extends View {
public void setBitmap(Bitmap bitmap) {
this.bitmap = bitmap;
invalidate();
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int width = MeasureSpec.getSize(widthMeasureSpec);
int height = MeasureSpec.getSize(heightMeasureSpec);
setMeasuredDimension(width, height);
}
public Bitmap getResizedBitmap(int originial_width, int original_height) {
this.setDrawingCacheEnabled(true);
Bitmap bitmap = Bitmap.createBitmap(this.getDrawingCache());
return Bitmap.createScaledBitmap(bitmap,originial_width_answersheet,original_height_answersheet,false);
}
}
Links I have referred and unsuccessful,
Android View.getDrawingCache returns null, only null
Call to getDrawingCache
returns null when scroll is enabled
etc..