2017-04-18 139 views
0

我的情况: 在“添加个人档案”页面中,我有一个微调框,在该微调框中,我有一个用户可以从中选择的图像列表。当用户选择一个图像并点击“保存”按钮时,我希望该图像可以进入数据库,然后将其添加到其他活动中。如何将图片保存到Firebase?

我想将图像保存到数据库的原因是因为我想添加用户在我的主页上选择的图像。

我已经尝试了很多东西,包括: 在微调器内部使用字符串而不是图像,然后当用户选择某个字符串时,它会将页面上的图像视图更改为正确的图像。但是,我仍然遇到了将数据映射到数据库的问题。我也尝试绕过数据库,只是将图像添加到其他活动与IF语句和意图等没有运气。

我定制微调:

int[] array = getResources().getIntArray(R.array.images_array); 
     String [] objects = new String[array.length]; 
     for(int i = 0; i != array.length; i++){ 
      objects[i] = "" + array[i]; 
     } 

     spinner5.setAdapter(new MyAdapter(AddProfileActivity.this, R.id.spinner5, objects)); 

    } 

然后保存按钮,我试图用下:String valueOfSelectedPos = spinner5.getSelectedItem().toString(); 我已经试过这条线的最变化,因为我知道我使用的是字符串在这里尝试添加图像!

然后我去使用它添加到我的数据库:

String id = databaseClients.push().getKey(); 

      Clients clients = new Clients(id, name, career, 
valueOfSelectedPos); 

      databaseClients.child(id).setValue(clients); 

正如你可能会说,我在这里完全难住了。 如果您需要任何澄清或添加任何更多的代码,我将非常乐意发布它。 任何帮助将不胜感激。提前致谢!

回答

2

获取图像的Uri要保存火力,为您可能需要图像保存到存储设备,然后调用此方法

private void uploadImage(Uri uri) { 
      FirebaseStorage storage = FirebaseStorage.getInstance(); 
      StorageReference storageRef = storage.getReference().child("users").child(FirebaseAuth.getInstance().getCurrentUser().getUid()); 
      storageRef.child(FirebaseAuth.getInstance().getCurrentUser().getUid()).putFile(uri); 
     } 
+0

谢谢您的回答!所以我必须先将图像保存到设备中?你知道有没有办法解决这个问题?再次感谢。 – Joe

+0

你有什么类型的图像文件?它是一个可绘制的或位图? –

+0

我也可以做,目前它是可绘制的。你知道吗?谢谢 – Joe