게시글 삭제시 에러 문의드립니다
안녕하세요 선생님, 잦은 질문 죄송합니다ㅠㅠ 현재 안드로이드 코틀린 커뮤니티앱 강의 중 게시글 삭제 만들기까지 진행한 상황입니다.
게시글 삭제를 클릭해도 화면과 파이어베이스에 해당 글이 그대로 남아있는 문제가 발생해 질문드립니다(앱이 죽지는 않고, 로그에 에러 메시지도 찍히지 않습니다).
https://github.com/shinyelee/my-solo-life
혹시몰라 리얼타임DB, 스토리지 규칙도 캡처했습니다.
답변 1
0
안녕하세요 예리님
이전에 만들어놓은 Firebase를 최근 작업중이신 것 같네요
마찬가지로 이렇게 true로 변경해보시겠어요?

0
// 전체 코드는 깃허브에 있고 -> https://github.com/shinyelee/my-solo-life
// 아래는 BoardInsideActivity 코드입니다
package com.shinyelee.my_solo_life.board
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.widget.Button
import android.widget.Toast
import androidx.appcompat.app.AlertDialog
import androidx.databinding.DataBindingUtil
import com.bumptech.glide.Glide
import com.google.android.gms.tasks.OnCompleteListener
import com.google.firebase.database.DataSnapshot
import com.google.firebase.database.DatabaseError
import com.google.firebase.database.ValueEventListener
import com.google.firebase.ktx.Firebase
import com.google.firebase.storage.ktx.storage
import com.shinyelee.my_solo_life.R
import com.shinyelee.my_solo_life.databinding.ActivityBoardInsideBinding
import com.shinyelee.my_solo_life.utils.FBRef
import java.lang.Exception
class BoardInsideActivity : AppCompatActivity() {
private val TAG = BoardInsideActivity::class.java.simpleName
private lateinit var binding : ActivityBoardInsideBinding
private lateinit var key : String
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this, R.layout.activity_board_inside)
binding.boardSettingIcon.setOnClickListener {
showDialog()
}
val key = intent.getStringExtra("key").toString()
getBoardData(key)
getImageData(key)
}
private fun showDialog() {
val mDialogView = LayoutInflater.from(this).inflate(R.layout.custom_dialog, null)
val mBuilder = AlertDialog.Builder(this)
.setView(mDialogView)
.setTitle("게시글 수정/삭제")
val alertDialog = mBuilder.show()
alertDialog.findViewById<Button>(R.id.editBtn)?.setOnClickListener {
Toast.makeText(this, "글이 수정되었습니다", Toast.LENGTH_LONG).show()
}
alertDialog.findViewById<Button>(R.id.removeBtn)?.setOnClickListener {
FBRef.boardRef.child(key).removeValue()
Toast.makeText(this, "글이 삭제되었습니다", Toast.LENGTH_LONG).show()
finish()
}
}
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 imageViewFromFB = binding.getImageArea
storageReference.downloadUrl.addOnCompleteListener(OnCompleteListener { task ->
if(task.isSuccessful) {
Glide.with(this)
.load(task.result)
.into(imageViewFromFB)
} else {
}
})
}
private fun getBoardData(key : String) {
val postListener = object : ValueEventListener {
override fun onDataChange(dataSnapshot: DataSnapshot) {
try {
val dataModel = dataSnapshot.getValue(BoardModel::class.java)
// Log.d(TAG, dataModel!!.title)
binding.titleArea.text = dataModel!!.title
binding.textArea.text = dataModel!!.contents
binding.timeArea.text = dataModel!!.time
} catch (e : Exception) {
Log.d(TAG, "글이 삭제되었습니다")
}
}
override fun onCancelled(databaseError: DatabaseError) {
// Getting Post failed, log a message
Log.w(TAG, "loadPost:onCancelled", databaseError.toException())
}
}
FBRef.boardRef.child(key).addValueEventListener(postListener)
}
}
2
boardInsideActivity에서
private lateinit var key : String
여기 lateinit key이라고 만들어놓은것을
private fun showDialog() {
val mDialogView = LayoutInflater.from(this).inflate(R.layout.custom_dialog, null)
val mBuilder = AlertDialog.Builder(this)
.setView(mDialogView)
.setTitle("게시글 수정/삭제")
val alertDialog = mBuilder.show()
alertDialog.findViewById<Button>(R.id.editBtn)?.setOnClickListener {
Toast.makeText(this, "글이 수정되었습니다", Toast.LENGTH_LONG).show()
Log.d("LOG Key", key)
}
alertDialog.findViewById<Button>(R.id.removeBtn)?.setOnClickListener {
Log.d("LOG Key", key)
FBRef.boardRef.child(key).removeValue()
Toast.makeText(this, "글이 삭제되었습니다", Toast.LENGTH_LONG).show()
finish()
}
}
showDialog에서 사용하는데
저 key에 값이 들어가지 않았습니다.
아래 부분을
val key = intent.getStringExtra("key").toString()
이렇게 변경해보세요.
key = intent.getStringExtra("key").toString()
이미지가 기본이미지인지 확인
0
143
1
NavController error 발생
0
156
1
fragment 생성하고 메인에서 불러왔는데 안뜹니다.
0
151
2
67강 댓글
0
113
2
7강 데이터바인딩 에러
0
129
2
Firebase 스토리지 유료화 문제
1
309
2
게시글 이미지가 파이어베이스에 저장되지 않습니다.
0
192
2
AVD 갤러리에 이미지 저장 안되는 문제
0
257
2
이미지 받아오는 방법?
0
213
2
회원탈퇴 기능을 추가하려고 합니다.
0
198
2
상태바 질문 드립니다.
0
120
1
섹션2 인트로 페이지 꾸미기 질문 드립니다.
0
124
1
게시판 글을 길게 쓸경우
0
131
2
로그인 로그아웃
0
188
2
갤럭시 연결시 게시판에 업로드한 사진이 보이지 않아요.
0
222
2
웹뷰 AVD 실행안됨
0
201
1
자막켜기가 안되요 ㅜ.ㅜ
1
199
1
리사이클러뷰, 그리드레이아웃 오류
0
194
2
리사이클러뷰 오류 해결 방법이 궁금합니다.
0
204
1
firebase 스마트폰으로 연결이 안되는데 원인이 있을까요
0
274
2
안드로이드 스튜디오 게시글 이미지 업로드 유무
0
230
1
firebase 설정 오류
0
312
2
홈 화면 커뮤니티
0
183
1
게시판 글 읽기
0
247
2





