• 카테고리

    질문 & 답변
  • 세부 분야

    모바일 앱 개발

  • 해결 여부

    해결됨

이미지업로드관련 질문

22.11.08 12:13 작성 조회수 183

0

writeActivity에서 storage로 키값이 전송이 된것은 확인이 되었는데 insideActivity에서 storage에 있는 key값이 안들어옵니다. 자세하게는 mountain.jpg랑 key를 직접 복붙한것은 되는데 key+".png"가 안됩니다. 그리고 toast로 실험해봤을 때

'key = intent.getStringExtra("key").toString()' 가 null이라고 출력이됩니다.아래는 insideActivity입니다.

package com.example.knunity.board

import android.os.Bundle
import android.util.Log
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.isVisible
import com.bumptech.glide.Glide
import com.example.knunity.databinding.ActivityBoardInsideBinding
import com.google.android.gms.tasks.OnCompleteListener
import com.google.firebase.ktx.Firebase
import com.google.firebase.storage.FirebaseStorage
import com.google.firebase.storage.ktx.storage

class BoardInsideActivity : AppCompatActivity() {
    private lateinit var key: String
    private val binding: ActivityBoardInsideBinding by lazy {
        ActivityBoardInsideBinding.inflate(layoutInflater)
    }
    lateinit var datas: BoardModel
    private val Tag = BoardInsideActivity::class.java.simpleName
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(binding.root)

        // val title = intent.getStringArrayExtra("title").toString()
        //val contents = intent.getStringArrayExtra("contents").toString()
        //val time = intent.getStringArrayExtra("time").toString()
        //val uid = intent.getStringArrayExtra("uid").toString()

        datas = intent.getSerializableExtra("data") as BoardModel
        binding.titlePage.text = datas.title
        binding.contentPage.text = datas.contents
        binding.timePage.text = datas.time

        key = intent.getStringExtra("key").toString()
        Log.d("test", key)

        getImagefromFB(key)
        //  Log.d(Tag, title)
        // Log.d(Tag, contents)
        // Log.d(Tag, time)

    }

        private fun getImagefromFB(key: String) {

        val storageReference = Firebase.storage.reference.child(key+".png")
        val imageViewFromFB = binding.imagePage


        storageReference.downloadUrl.addOnCompleteListener(OnCompleteListener { task ->
            if (task.isSuccessful) {
                Glide.with(this)
                    .load(task.result)
                    .into(imageViewFromFB)
            } else {
                imageViewFromFB.isVisible = false
                Toast.makeText(this,key,Toast.LENGTH_SHORT).show()
            }

        })
    }
//    private fun getImageData(key: String) {
//        // Reference to an image file in Cloud Storage
//        val storageReference = Firebase.storage.reference.child(key + ".png")
//        // ImageView in your Activity
//        val imageViewFB = binding.imagePage
//
//
//
//        storageReference.downloadUrl.addOnCompleteListener(OnCompleteListener { task ->
//            if (task.isSuccessful) {
//                Glide.with(this)
//                    .load(task.result)
//                    .into(imageViewFB)
//            } else {
//                Toast.makeText(this, "FAIL TO LOAD", Toast.LENGTH_SHORT).show()
//            }
//        })
//
//    }
}

답변 1

답변을 작성해보세요.

0

안녕하세요

저.. 질문이 이해가 잘 안가는데

영상 플레이 타임 기준으로 좀 더 자세히 설명해주시겠어요?

mvp_imp님의 프로필

mvp_imp

질문자

2022.11.14

간단하게 말씀드리면

key = intent.getStringExtra("key").toString()
이게 null로 찍혀서 스토리지에 있는 이미지 key값을 못불러오고 있는게 문제입니다.

 

질문주신 것을 보면 당연히 아시겠지만

intent에서 값을 받아오면 BoardInsideActivity 에서 값을 넘기고 있을텐데 넘기는 쪽에 값이 제대로 들어갔는지 확인해보시겠어요?