You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Android开发:未选ImageView图片致SQLite插入崩溃,需添加提示判断

解决未选择图片时保存崩溃的问题

嘿,这个空指针问题我太熟了!咱们先把问题根因捋清楚:当你没给ImageView设置任何图片时,它的getDrawable()方法会返回null,这时候你直接强转成BitmapDrawable并调用getBitmap(),自然就触发了NullPointerException

要解决这个问题,只需要在点击保存按钮的逻辑里先判断ImageView是否已经加载了图片,如果没有就弹出提示,阻止后续的数据库插入操作。具体代码修改如下:

修改保存按钮的点击事件逻辑

找到你的btnAddData点击监听代码,改成这样:

btnAddData.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // 第一步:检查ImageView是否有图片
        Drawable imageDrawable = yourImageView.getDrawable(); // 把yourImageView换成你实际的ImageView变量名
        if (imageDrawable == null) {
            // 弹出提示Toast
            Toast.makeText(getApplicationContext(), "请选择签名", Toast.LENGTH_SHORT).show();
            return; // 直接返回,不执行后续的插入逻辑
        }

        // 第二步:确认有图片后,再处理Bitmap并插入数据库
        Bitmap bitmap = ((BitmapDrawable) imageDrawable).getBitmap();
        // 这里写你原来的SQLite插入代码...
    }
});

如果你习惯用Lambda表达式,也可以写成更简洁的版本:

btnAddData.setOnClickListener(v -> {
    Drawable imageDrawable = yourImageView.getDrawable();
    if (imageDrawable == null) {
        Toast.makeText(this, "请选择签名", Toast.LENGTH_SHORT).show();
        return;
    }
    Bitmap bitmap = ((BitmapDrawable) imageDrawable).getBitmap();
    // 执行SQLite插入操作
});

补充说明

  • 核心逻辑就是先判断,再执行:在获取Bitmap之前先检查Drawable是否为空,避免在null对象上调用方法。
  • 不管你是用setImageBitmap()还是setImageURI()设置图片,这个判断逻辑都适用——只要ImageView没有加载图片,getDrawable()就会返回null。

这样修改后,用户没选图片就点击保存时,只会弹出提示Toast,不会再崩溃啦!

内容的提问来源于stack exchange,提问作者Jullian Arnold

火山引擎 最新活动