Java Android是否将自定义alertview转换为位图?
我想拍摄自定义警报视图的图像。我已经使用buildDrawingCache将LinearLayout转换为位图,工作正常,但当我尝试将自定义警报视图(使用RelativeLayout)转换为位图时,会出现错误 //将视图转换为图像Java Android是否将自定义alertview转换为位图?,java,android,Java,Android,我想拍摄自定义警报视图的图像。我已经使用buildDrawingCache将LinearLayout转换为位图,工作正常,但当我尝试将自定义警报视图(使用RelativeLayout)转换为位图时,会出现错误 //将视图转换为图像 private String getLayoutBitmap() { RelativeLayout view = (RelativeLayout) findViewById(R.id.glayer); view.setDrawingCa
private String getLayoutBitmap() {
RelativeLayout view = (RelativeLayout) findViewById(R.id.glayer);
view.setDrawingCacheEnabled(true);
view.buildDrawingCache();
Bitmap bikeBm = view.getDrawingCache();
File filePath = getFileStreamPath("twitterimage1.jpg");
// delete saved image
if (new File(filePath.toString()).delete()) {
Log.i("INTERNAL_STORAGE_IMG_FILE", "deleted");
}
try {
// Use the compress method on the Bitmap object to write image to
// the OutputStream
FileOutputStream fos = openFileOutput("twitterimage1.jpg",
Context.MODE_WORLD_READABLE);
// Writing the bitmap to the output stream
bikeBm.compress(Bitmap.CompressFormat.JPEG, 100, fos);
fos.close();
} catch (Exception e) {
Log.e("saveToInternalStorage()", e.getMessage());
}
return filePath.toString();
}
//例外情况
02-22 11:18:37.758: E/AndroidRuntime(21822): FATAL EXCEPTION: main
02-22 11:18:37.758: E/AndroidRuntime(21822): java.lang.NullPointerException
02-22 11:18:37.758: E/AndroidRuntime(21822): at com.bike.app.ScoreClass.getLayoutBitmap(ScoreClass.java:435)
02-22 11:18:37.758: E/AndroidRuntime(21822): at com.bike.app.ScoreClass.initShareIntent(ScoreClass.java:475)
02-22 11:18:37.758: E/AndroidRuntime(21822): at com.bike.app.ScoreClass.access$0(ScoreClass.java:460)
02-22 11:18:37.758: E/AndroidRuntime(21822): at com.bike.app.ScoreClass$2.onClick(ScoreClass.java:156)
02-22 11:18:37.758: E/AndroidRuntime(21822): at android.view.View.performClick(View.java:3620)
02-22 11:18:37.758: E/AndroidRuntime(21822): at android.view.View$PerformClick.run(View.java:14292)
02-22 11:18:37.758: E/AndroidRuntime(21822): at android.os.Handler.handleCallback(Handler.java:605)
02-22 11:18:37.758: E/AndroidRuntime(21822): at android.os.Handler.dispatchMessage(Handler.java:92)
02-22 11:18:37.758: E/AndroidRuntime(21822): at android.os.Looper.loop(Looper.java:137)
02-22 11:18:37.758: E/AndroidRuntime(21822): at android.app.ActivityThread.main(ActivityThread.java:4507)
02-22 11:18:37.758: E/AndroidRuntime(21822): at java.lang.reflect.Method.invokeNative(Native Method)
02-22 11:18:37.758: E/AndroidRuntime(21822): at java.lang.reflect.Method.invoke(Method.java:511)
02-22 11:18:37.758: E/AndroidRuntime(21822): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:980)
02-22 11:18:37.758: E/AndroidRuntime(21822): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:747)
02-22 11:18:37.758: E/AndroidRuntime(21822): at dalvik.system.NativeStart.main(Native Method)
所以在第435行有一个空指针。那是哪一行?第435行是RelativeLayout视图=(RelativeLayout)findViewById(R.id.glayer);奇怪的是,那里没有任何东西通常会抛出NPE。1) 自从你拿到日志后,你有没有更改代码?如果是这样,请获取一个新的日志,并查看它是否显示不同的行。2) logcat中是否有更多信息,或者这是完整跟踪?很抱歉,第435行是view。setDrawingCacheEnabled(true);然后,
视图
为空。确保您在前一行中使用的id正确(R.id.glayer
),并且它位于当前设置的contentview中。