当前位置: 首页 > 知识库问答 >
问题:

检索图像时应用程序崩溃

宗政博文
2023-03-14

我使用下面的代码插入了捕获图像,并获得了< code >“not null”,这表明数据不为null。

        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View arg0) {

                if ((name != null && name.trim().length() > 0) && (result != null && result.trim().length() > 0)) {
                   // Toast.makeText(getActivity().getApplicationContext(), fk+"", Toast.LENGTH_LONG).show();
                    byte[] data=getBitmapAsByteArray(Global.img); // this is a function
                    if(data==null)
                    {
                        Toast.makeText(getActivity(), "null", Toast.LENGTH_LONG).show();
                    }
                    else
                    {


                        Toast.makeText(getActivity(), " not null", Toast.LENGTH_LONG).show();
                        SB.insertStaffBenefit(name, data, description, result, fk);
                    }
                }

        });
        return claims;
    }
public static byte[] getBitmapAsByteArray(Bitmap bitmap)
{
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.PNG, 0, outputStream);
    return outputStream.toByteArray();
}

然而,当我试图检索捕获的图像时,应用程序崩溃了。

 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.receipt);
    dbHelper = new MyDatabaseHelper(this);
    final String k = getIntent().getExtras().getString("ID");
    Toast.makeText(getApplicationContext(), k+"", Toast.LENGTH_LONG).show();
     ImageView a=(ImageView)findViewById(R.id.imageView5);
     database = dbHelper.getWritableDatabase();
     c = database.rawQuery("SELECT s.Image FROM Information i LEFT JOIN StaffBenefit s ON s.Twd_id=i._id WHERE i._id=? ", new String[]{String.valueOf(k)},null);
                if(c.moveToFirst())
                        {
                       byte[] img=c.getBlob(c.getColumnIndexOrThrow("Image"));
                        if(img!=null)
                        {
                            Log.e("TAG", " Not null");
                        }
                        else
                        {
                            Log.e("TAG", " null");
                        }
                        ByteArrayInputStream imageStream = new ByteArrayInputStream(img);
                        Bitmap theImage= BitmapFactory.decodeStream(imageStream);
                        a.setImageBitmap(theImage);

                    }

                c.close();
            }
        }

MyDatabaseHelper.java

 public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table " + TABLE_STAFF_BENEFIT + "( "  + ID3 + " INTEGER PRIMARY KEY , Claim_Type TEXT, Image BLOB, Description TEXT , Amount TEXT, Twd_id INTEGER, FOREIGN KEY(Twd_id) REFERENCES "+TABLE_INFO+"(_id))");
}

原因:Java . lang . illegalstateexception:无法从CursorWindow读取第0行第0列。在从游标访问数据之前,请确保游标已正确初始化。at Android . database . cursor window . Native getblob(Native Method)at Android . database . cursor window . get blob(cursor window . Java:404)at Android . database . abstractwindowedcursor . get blob(abstractwindowedcursor . Java:45)at com . example . project . project . receipt . oncreate(receipt . Java:40)

(收据.java:40)

  byte[] img=c.getBlob(c.getColumnIndexOrThrow("Image"));

是否如从 Android sqlite 数据库检索大型 blob 中所述的大 blob 导致的错误?我该如何解决?谢谢

共有1个答案

董琦
2023-03-14

我想你自己找到了解决办法。

你知道onClick-Handler中的图像/图像有多大吗?如果它们大于1Mb,则无法将信息保存在一个光标中。有关解决方案,请参阅您自己的链接。

但是如果可能的话,也许你可以先测试一下。尝试插入/选择大小小于1Mb的图像,然后插入/选择大小大于1Mb的图像。

如果第一个测试成功而第二个没有,您需要按照您的帖子中的解决方案进行操作:从Android sqlite数据库检索大blob

 类似资料:
  • 下面给出的错误 process:com.example.rahul.maptask,pid:21986 java.lang.runtimeException:无法启动活动ComponentInfo{com.example.rahul.maptask/com.example.rahul.maptask.mainactivity}:java.lang.nullpointerException:试图在A

  • 3 CoreFoundation CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION+28 4 CoreFoundation__CFrunloopdoTimer+880 5 CoreFoundation__CFrunloopdoTimers+276 10 Figment POS AppDelegate.Swift-第39行main+39 11

  • 对于某些活动的意图是有效的,对于某些特定的活动意图是崩溃的,我已经改变并尝试了不同的方法,但是对于某些活动意图是无效的,应用程序正在构建,但是在手机上运行之后,它在调试期间没有显示出任何错误?我尝试了不同的方法,但它仍然崩溃,谁能帮助我解决它? MainActivity java 清单文件

  • 我是Android的新手,正在开发我的第一个应用程序。我的主要活动(登录活动)没有操作栏,其余所有活动都有操作栏。当我长时间按下编辑文本时,应用程序会与下面提到的logcat崩溃。我无法找出导致此错误的原因。请帮我找到它。 主要活动.java activity_main.xml