繁体   English   中英

将LinearLayout转换为图像时出现异常

Getting exception while converting linearlayout to image

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我想将线性布局转换为图像。为此,我正在使用以下代码,但是我得到了nullpointerexception。请告诉我如何解决此问题。这是代码:

public class AndroidWebImage extends Activity {

ImageView bmImage; 
LinearLayout view;
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main);

      view = (LinearLayout)findViewById(R.id.screen);
      bmImage = (ImageView)findViewById(R.id.image);

      view.setDrawingCacheEnabled(true);
      // this is the important code :)  
      // Without it the view will have a dimension of 0,0 and the bitmap will be null          

      view.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), 
            MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));

      view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight()); 

      view.buildDrawingCache(true);
      Bitmap b = Bitmap.createBitmap(view.getDrawingCache());
      view.setDrawingCacheEnabled(false); // clear drawing cache

      bmImage.setImageBitmap(b);   

};
}

我在此行中遇到异常:

 Bitmap b = Bitmap.createBitmap(view.getDrawingCache());

这是错误日志:

09-13 12:19:26.061: W/dalvikvm(551): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
09-13 12:19:26.112: E/AndroidRuntime(551): Uncaught handler: thread main exiting due to uncaught exception
09-13 12:19:26.593: E/AndroidRuntime(551): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.velosys.interview_preparation/com.velosys.interview_preparation.activities.Certificate}: java.lang.NullPointerException
09-13 12:19:26.593: E/AndroidRuntime(551):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
09-13 12:19:26.593: E/AndroidRuntime(551):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
09-13 12:19:26.593: E/AndroidRuntime(551):  at android.app.ActivityThread.access$2200(ActivityThread.java:119)
09-13 12:19:26.593: E/AndroidRuntime(551):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
09-13 12:19:26.593: E/AndroidRuntime(551):  at android.os.Handler.dispatchMessage(Handler.java:99)
09-13 12:19:26.593: E/AndroidRuntime(551):  at android.os.Looper.loop(Looper.java:123)
09-13 12:19:26.593: E/AndroidRuntime(551):  at android.app.ActivityThread.main(ActivityThread.java:4363)
09-13 12:19:26.593: E/AndroidRuntime(551):  at java.lang.reflect.Method.invokeNative(Native Method)
09-13 12:19:26.593: E/AndroidRuntime(551):  at java.lang.reflect.Method.invoke(Method.java:521)
09-13 12:19:26.593: E/AndroidRuntime(551):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
09-13 12:19:26.593: E/AndroidRuntime(551):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
09-13 12:19:26.593: E/AndroidRuntime(551):  at dalvik.system.NativeStart.main(Native Method)
09-13 12:19:26.593: E/AndroidRuntime(551): Caused by: java.lang.NullPointerException
09-13 12:19:26.593: E/AndroidRuntime(551):  at android.graphics.Bitmap.createBitmap(Bitmap.java:358)
09-13 12:19:26.593: E/AndroidRuntime(551):  at com.velosys.interview_preparation.activities.Certificate.onCreate(Certificate.java:76)
09-13 12:19:26.593: E/AndroidRuntime(551):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
09-13 12:19:26.593: E/AndroidRuntime(551):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
09-13 12:19:26.593: E/AndroidRuntime(551):  ... 11 more
09-13 12:19:26.661: I/dalvikvm(551): threadid=7: reacting to signal 3
09-13 12:19:26.661: E/dalvikvm(551): Unable to open stack trace file '/data/anr/traces.txt': Permission denied

提前致谢。

2 个回复

您无法在onCreate中执行此操作。 布局尚未显示。 您可以稍后在Activity的生命周期中进行操作,例如onWindowFocusChanged或使用ViewTreeObserver,我更喜欢这样做,因为它更符合OOP。

http://developer.android.com/reference/android/view/ViewTreeObserver.OnGlobalLayoutListener.html

很奇怪,绘图缓存似乎为getDrawingCache()返回null。

也许您可以在不使用缓存的情况下尝试这种方法。

Bitmap bitmap = Bitmap.createBitmap( view.getLayoutParams().width, view.getLayoutParams().height, Bitmap.Config.ARGB_8888);                
Canvas canvas = new Canvas(bitmap);
view.layout(0, 0, view.getLayoutParams().width, view.getLayoutParams().height);
view.draw(canvas);
2 将UIView向下转换为SKView时,出现异常

为什么此代码返回异常“无法将类型'UIView'(0x1f1ed90)的值转换为'SKView'”? 该代码之前工作正常,突然间它开始引发异常。 My View的类在情节提要中设置为SKView。 奇怪的是,只有当我在游戏中实现iad时,该异常才会开始抛出。 我有什么想念的吗? ...

6 将String对象强制转换为SqlString时出现异常

我在下面简单的c#方法中有一个简单的强制转换问题 当从s直接投射时(在t1的情况下),我没有得到任何错误但是当从o我得到异常: 指定演员表无效。 我有同样的问题从object转换为所有类型System.Data.SqlTypes 如何将包含字符串的object S ...

8 尝试转换IEnumerable时出现异常?

我还在学习C#项目的前几周,我正在尝试正确实现IEnumerable接口。 我已经阅读了许多教程/指南,但我似乎仍然做错了什么。 我有一个强大的Java背景,所以我认为我对Java泛型的一些知识让我理解它们如何在C#中工作。 我无法改变的类包含一个实例变量: public IEnu ...

9 将字符数组转换为字符串时出现异常异常

我正在尝试构建一个利用替换表和密钥来生成密文/加密文本的程序。 到目前为止,我已经成功地将加密的文本存储在char数组中。 如果我使用for循环遍历文本,则每次都可以完美地工作。 但是,我需要将加密的文本作为字符串返回。 这是我正在使用的方法... 当我尝试引出密文时,有时会正常 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM