使用Kotlin在Firebase上上载图像和说明

使用Kotlin在Firebase上上载图像和说明,firebase,image,android-studio,kotlin,post,Firebase,Image,Android Studio,Kotlin,Post,目前,我的应用程序在firebase上上传图像,但我也想添加该图像的描述。之后,我需要在主页上检索图像和描述。但是我被困在我还添加上传图像描述的部分 package com.giveandshareauth import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.app.Activity import android.app.ProgressDialog import and

目前,我的应用程序在firebase上上传图像,但我也想添加该图像的描述。之后,我需要在主页上检索图像和描述。但是我被困在我还添加上传图像描述的部分

package com.giveandshareauth

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.app.Activity
import android.app.ProgressDialog
import android.content.Intent
import android.net.Uri
import android.nfc.Tag
import android.provider.MediaStore

import android.text.TextUtils
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.fragment.app.Fragment
import com.giveandshareauth.Fragments.HomeFragment
import com.giveandshareauth.Fragments.PostFragment
import com.giveandshareauth.R
import com.google.android.gms.tasks.OnCompleteListener
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.database.FirebaseDatabase
import com.google.firebase.storage.FirebaseStorage
import com.google.firebase.storage.StorageReference
import com.google.firebase.storage.StorageTask
import kotlinx.android.synthetic.main.fragment_post.*
import com.theartofdev.edmodo.cropper.CropImage

import com.google.android.gms.tasks.Continuation
import com.google.android.gms.tasks.Task
import com.google.firebase.storage.UploadTask
import kotlinx.android.synthetic.main.activity_post.*
import kotlinx.android.synthetic.main.activity_registration.*
import kotlinx.android.synthetic.main.fragment_post.PostImage
import kotlinx.android.synthetic.main.activity_post.PostInfo as PostInfo1

class PostActivity : AppCompatActivity() {

    lateinit var filepath : Uri
    private var imageUri: Uri? = null
    private var storagePostImages: StorageReference? = null


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_post)
        storagePostImages = FirebaseStorage.getInstance().reference

        upload.setOnClickListener(){
            uploadFiles()
        }

        publish.setOnClickListener(){
            publishFiles()


        }
    }

    private fun uploadFiles() {
        var i = Intent()
        i.setType("image/*")
        i.setAction(Intent.ACTION_GET_CONTENT)
        startActivityForResult(Intent.createChooser(i, "Choose an image"), 111)


    }

    private fun publishFiles(){
        

        if(filepath != null){
            var pd = ProgressDialog(this)
            pd.setTitle("Upload")
            pd.show()
            var imageRef = FirebaseStorage.getInstance().getReference().child("Images/"+System.currentTimeMillis()); //Every time an image will be uploaded, it will have a unique name in Firebase
            imageRef.putFile(filepath)
                    .addOnSuccessListener {param ->
                        pd.dismiss()
                        Toast.makeText(applicationContext,"File uploaded",Toast.LENGTH_LONG).show()

                    }
                    .addOnFailureListener {param ->
                        pd.dismiss()
                        Toast.makeText(applicationContext, param.message,Toast.LENGTH_LONG).show()

                    }
                    .addOnProgressListener {param ->    // how much percent of the file is uploaded
                        var progress = (100.0 * param.bytesTransferred) / param.totalByteCount
                        pd.setMessage("Uploaded ${progress.toInt()}%")

                    }

                        imageRef.downloadUrl
                    }

        }


        // val intent = Intent(this, HomeFragment::class.java)
        // startActivity(intent);


    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if(requestCode==111 && resultCode == Activity.RESULT_OK && data != null){
            filepath = data.data!!
            var bitmap = MediaStore.Images.Media.getBitmap(contentResolver,filepath)
            PostImage.setImageBitmap(bitmap)
        }

    }



}
该活动有一个上载和发布按钮,还有一个ImageView和一个EditText publish按钮在firebase上上传图像,我想我应该添加一个新按钮,在添加描述后上传整个内容

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".Fragments.HomeFragment">

    <RelativeLayout
        android:id="@+id/layoutID"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <!-- TODO: Update blank fragment layout -->
        <com.google.android.material.appbar.AppBarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/app_bar_layout_post"
            android:background="@android:color/white"
            >

            <androidx.appcompat.widget.Toolbar
                android:id="@+id/post_toolbar"
                android:layout_width="match_parent"
                android:layout_height="50dp"
                android:layout_marginTop="4dp"
                android:layout_marginLeft="6dp"
                android:layout_marginRight="6dp"
                android:background="@android:color/white"
                >

                <RelativeLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content">

                    <ImageView
                        android:id="@+id/close_post_btn"
                        android:layout_width="20dp"
                        android:layout_height="30dp"
                        android:layout_alignParentStart="true"
                        android:src="@drawable/close"
                        />

                    <ImageView
                        android:id="@+id/save_post_btn"
                        android:layout_width="30dp"
                        android:layout_height="30dp"
                        android:layout_marginRight="15dp"
                        android:layout_alignParentEnd="true"
                        android:src="@drawable/save"
                        />

                </RelativeLayout>

            </androidx.appcompat.widget.Toolbar>

        </com.google.android.material.appbar.AppBarLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:layout_marginTop="10dp"
            android:layout_below="@+id/app_bar_layout_post"
            >
            <ImageView
                android:id="@+id/PostImage"
                android:layout_width="match_parent"
                android:layout_height="250dp"
                android:src="@drawable/add_image_icon"
                />
            <EditText
                android:id="@+id/PostInfo"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="5dp"
                android:hint="Describe your Giveaway..."
                />


        </LinearLayout>

        <Button
            android:id="@+id/publish"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="249dp"
            android:layout_marginTop="404dp"
            android:layout_marginEnd="49dp"
            android:layout_marginBottom="517dp"
            android:text="publish" />

        <Button
            android:id="@+id/upload"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="49dp"
            android:layout_marginTop="404dp"
            android:layout_marginEnd="249dp"
            android:layout_marginBottom="517dp"
            android:text="upload" />

    </RelativeLayout>
</FrameLayout>


此代码中的哪些内容没有按您期望的方式工作?告诉我们共享代码有什么问题。你有什么错误吗?代码运行得很好,我添加它只是为了显示我到目前为止所做的。我的问题是Idk如何向数据库中添加表示上传照片描述的字符串