2016-05-13 51 views
0

我已经创建了一个SQLite数据库在一个Android应用程序使用它们的值:在一个SQLite数据库使用的路径,并用它来获取图像

mydatabase = openOrCreateDatabase("MINERALG", MODE_PRIVATE, null); 
    mydatabase.execSQL("DROP TABLE IF EXISTS MINERALS"); 
    mydatabase.execSQL("CREATE TABLE IF NOT EXISTS MINERALS(Name TEXT, Type TEXT, Subtype TEXT, Formula TEXT, Path TEXT);"); 
    mydatabase.execSQL("INSERT INTO MINERALS VALUES('calcite','Non Silicate','Carbonates','CaCO3','app/src/main/res/drawable/calcite.jpg');"); 

使用intent.putExtra(“路径”,[字符串的路径])和intent.getStringExtra(“路径”),我已经通过路径作为一个字符串,我有它在另一个活动。

问题是我没有找到在第二个活动中显示图像的方法。我在项目的可绘制文件夹中有文件calcite.jpg。我尝试:

imgM = (ImageView)findViewById(R.id.imageView); 
String imgMine = intent.getStringExtra("path"); 
Uri uri = Uri.fromFile(new File(imgMine); 
imgM.setImageURI(uri); 

它不会抛出错误消息,但它不会显示图像,因为我试图做。

回答

0

您不能访问文件res目录这样... 更好的移动图像的资产目录,路径存储在数据库中,并通过加载它们:

String imgMine = intent.getStringExtra("path"); 
Uri uri = Uri.parse("file:///android_asset/" + imgMine); 
+0

我提出的图片两个资产文件夹(生成和中间)。然后我做Uri uri = Uri.parse(“file:/// android_asset /”+ imgMine); imgM.setImageURI(URI);然后我保存在DB:'app/build/generated/assets/calcite.jpg',但是我仍然应该做一些不好的事情。对不起,我是新来的。它应该很简单。 –

+0

不要将路径存储为“app/build/generated/assets/calcite.jpg”。 由于文件位于资产根目录中,它必须只是“calcite.jpg”。 :) – Seishin

+0

我不明白。我正确传递了calcite.jpg(我在EditText中测试过它)。 ImageView没有什么特别的。我做了一个.background(Color.red)它变成了红色。我把文件树留在另一个评论和XML代码 –