采取在Android中的截图时出错 [英] Error when taking a screenshot in Android
问题描述
我试图采取图我画的屏幕截图,但每次我尝试,我得到一个 NullExceptionPointer
。
下面是我的code:
lineChart.setChartData(数组1,数组2,XD);
查看V1 = lineChart.getRootView();
v1.setDrawingCacheEnabled(真);
位图= Bitmap.createBitmap(v1.getDrawingCache());
v1.setDrawingCacheEnabled(假);
其中,折线图
是一个自定义视图
这logcat的表示该行空: =位Bitmap.createBitmap(v1.getDrawingCache());
这里是我的logcat:
04-01 19:21:11.524:E / AndroidRuntime(333):致命异常:主要04-01 19:21:11.524:E / AndroidRuntime(333):了java.lang.RuntimeException:无法启动活动ComponentInfo {com.example.appui / com.example.appui.CompareActivity}:显示java.lang.NullPointerException
04-01 19:21:11.524:E / AndroidRuntime(333):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)04-01 19:21:11.524:E / AndroidRuntime(333):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
04-01 19:21:11.524:E / AndroidRuntime(333):在android.app.ActivityThread.access $ 1500(ActivityThread.java:117)
04-01 19:21:11.524:E / AndroidRuntime(333):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:931)
04-01 19:21:11.524:E / AndroidRuntime(333):在android.os.Handler.dispatchMessage(Handler.java:99)
04-01 19:21:11.524:E / AndroidRuntime(333):在android.os.Looper.loop(Looper.java:123)
04-01 19:21:11.524:E / AndroidRuntime(333):在android.app.ActivityThread.main(ActivityThread.java:3683)
04-01 19:21:11.524:E / AndroidRuntime(333):在java.lang.reflect.Method.invokeNative(本机方法)
04-01 19:21:11.524:E / AndroidRuntime(333):在java.lang.reflect.Method.invoke(Method.java:507)
04-01 19:21:11.524:E / AndroidRuntime(333):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:839)
04-01 19:21:11.524:E / AndroidRuntime(333):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
04-01 19:21:11.524:E / AndroidRuntime(333):在dalvik.system.NativeStart.main(本机方法)
04-01 19:21:11.524:E / AndroidRuntime(333):致:显示java.lang.NullPointerException
04-01 19:21:11.524:E / AndroidRuntime(333):在android.graphics.Bitmap.createBitmap(Bitmap.java:367)
04-01 19:21:11.524:E / AndroidRuntime(333):在com.example.appui.CompareActivity.onCreate(CompareActivity.java:37)
04-01 19:21:11.524:E / AndroidRuntime(333):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
04-01 19:21:11.524:E / AndroidRuntime(333):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
04-01 19:21:11.524:E / AndroidRuntime(333):11 ...更多
有关的 View.getDrawingCache(布尔)规定:
返回该视图图纸被缓存的位图。 返回
位为空时,缓存是禁用的。
块引用>使用绘图缓存为true,<一个href=\"http://developer.android.com/reference/android/view/View.html#setDrawingCacheEnabled%28boolean%29\"相对=nofollow> setDrawingCacheEnabled(布尔)。您也可以检查图纸缓存使用 isDrawingCacheEnabled启用( )。
I'm trying to take a screen shot of a chart I'm drawing, but everytime I try I get a
NullExceptionPointer
.Here is my code :
lineChart.setChartData(array1,array2,xd); View v1 = lineChart.getRootView(); v1.setDrawingCacheEnabled(true); bitmap = Bitmap.createBitmap(v1.getDrawingCache()); v1.setDrawingCacheEnabled(false);
Where
lineChart
is a custom ViewThis logcat indicates this line as null:
bitmap = Bitmap.createBitmap(v1.getDrawingCache());
here is my logcat :04-01 19:21:11.524: E/AndroidRuntime(333): FATAL EXCEPTION: main 04-01 19:21:11.524: E/AndroidRuntime(333): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.appui/com.example.appui.CompareActivity}: java.lang.NullPointerException 04-01 19:21:11.524: E/AndroidRuntime(333): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 04-01 19:21:11.524: E/AndroidRuntime(333): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 04-01 19:21:11.524: E/AndroidRuntime(333): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 04-01 19:21:11.524: E/AndroidRuntime(333): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 04-01 19:21:11.524: E/AndroidRuntime(333): at android.os.Handler.dispatchMessage(Handler.java:99) 04-01 19:21:11.524: E/AndroidRuntime(333): at android.os.Looper.loop(Looper.java:123) 04-01 19:21:11.524: E/AndroidRuntime(333): at android.app.ActivityThread.main(ActivityThread.java:3683) 04-01 19:21:11.524: E/AndroidRuntime(333): at java.lang.reflect.Method.invokeNative(Native Method) 04-01 19:21:11.524: E/AndroidRuntime(333): at java.lang.reflect.Method.invoke(Method.java:507) 04-01 19:21:11.524: E/AndroidRuntime(333): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 04-01 19:21:11.524: E/AndroidRuntime(333): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 04-01 19:21:11.524: E/AndroidRuntime(333): at dalvik.system.NativeStart.main(Native Method) 04-01 19:21:11.524: E/AndroidRuntime(333): Caused by: java.lang.NullPointerException 04-01 19:21:11.524: E/AndroidRuntime(333): at android.graphics.Bitmap.createBitmap(Bitmap.java:367) 04-01 19:21:11.524: E/AndroidRuntime(333): at com.example.appui.CompareActivity.onCreate(CompareActivity.java:37) 04-01 19:21:11.524: E/AndroidRuntime(333): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 04-01 19:21:11.524: E/AndroidRuntime(333): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 04-01 19:21:11.524: E/AndroidRuntime(333): ... 11 more
解决方案The documentation for View.getDrawingCache(boolean) states:
Returns the bitmap in which this view drawing is cached. The returned bitmap is null when caching is disabled.
Set the drawing cache to true using setDrawingCacheEnabled(boolean). You can also check if the drawing cache is enabled using isDrawingCacheEnabled().
这篇关于采取在Android中的截图时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!