采取在Android中的截图时出错 [英] Error when taking a screenshot in Android

查看:140
本文介绍了采取在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 View

This 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆