java - android 位图空指针异常

标签 java android

这是我的java类(class)。为什么我得到一个空指针?不是很好吗?就像我初始化了一切一样。显示的错误是

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.graphics.Bitmap.compress(android.graphics.Bitmap$CompressFormat, int, java.io.OutputStream)' on a null object reference

public class Screenshot extends Activity{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Bitmap bitmap = takeScreenshot();
        saveBitmap(bitmap);
    }
    public Bitmap takeScreenshot() {
        View rootView = findViewById(android.R.id.content).getRootView();
        rootView.setDrawingCacheEnabled(true);
        return rootView.getDrawingCache();
    }
    public void saveBitmap(Bitmap bitmap) {
        File imagePath = new File(Environment.getExternalStorageDirectory() + "/screenshot.png");
        FileOutputStream fos;
        try {
            fos = new FileOutputStream(imagePath);
            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
            fos.flush();
            fos.close();
        } catch (FileNotFoundException e) {
            Log.e("GREC", e.getMessage(), e);
        } catch (IOException e) {
            Log.e("GREC", e.getMessage(), e);
        }
    }
}

最佳答案

您的位图为空。根据日志,您正在尝试访问 null 对象上的 t 'boolean android.graphics.Bitmap.compress 方法。因此位图肯定是空的。

您也可以尝试此代码来获取位图:

View v1 = getWindow().getDecorView().getRootView();
        v1.setDrawingCacheEnabled(true);
        Bitmap bitmap = Bitmap.createBitmap(v1.getDrawingCache());
        v1.setDrawingCacheEnabled(false);

关于java - android 位图空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35378727/

相关文章:

android - ExpandableListView 动态子高度

android - 如何在windows xp中安装Android SDK和eclipse?

java - SimpleMessageListenerContainer - 消费者引发异常,如果连接工厂支持,处理可以重新启动

java - 如何在 iText 7 中查找文本位置和边界

java - 我的问题是关于通过 java 泛型添加不同包装类的数组

java - 是否可以将字符串附加到 Android Activity 标题栏?

android - android中xml解析的问题

java - Gradle 任务在测试后未运行

java - 私钥、公钥和证书的关系以及从 keystore 访问特定证书的最佳方式

java - Android 4+ 操作栏选项卡在首次启动时显示为下拉列表 - 为了防止?