스팀 앱 개발기 #89 - 태그 화면에서 다운보팅 카운트 클릭하면 앱이 죽는 문제
시작하며...
어제 보팅 리스트에 스팀잇 계정 검색 기능 추가는 성공적이었습니다. 그런데 추가로 테스트 하면서 버그가 나왔네요. 그것은요. 태그 화면에서 다운보팅 카운트를 클릭하면 앱이 죽는 문제입니다. 오늘은 기능 개발 대신 버그 수정을 해야 합니다.
버그 원인
TagsFragment 클래스의 upvoteViewClickListener는 수정했지만 downvoteViewClickListener를 수정하지 않았기 때문입니다. 전자에서 보팅 리스트 화면에 필요한 업보팅 배열을 업보팅 배열 리스트(ArrayList)로 수정했지만, 후자에서는 이를 하지 않았습니다. 그 결과, VoteListActivity 객체에서 이를 읽지 못 하고 ClassCastException을 발생시켰습니다.
수정
downvoteViewClickListener도 upvoteViewClickListener와 동일하게 보팅 리스트 화면에 필요한 다운보팅 배열을 업보팅 배열 리스트(ArrayList)로 수정했습니다.
private val downvoteViewClickListener = object: PostItemListAdapter.OnVoteCountViewClickListener {
override fun onClick(postItem: PostItem) {
// open new activity to show upvoting list
val downvotes = postItem.activeVotes.filter { vote ->
vote.isDownvote()
}.sortedByDescending { it.value }
if (downvotes.isEmpty()) {
return
}
val downvoteArrayList = ArrayList(downvotes)
Intent(requireActivity(), VoteListActivity::class.java).apply {
this.putExtra(VoteListActivity.INTENT_BUNDLE_VOTER_LIST, downvoteArrayList)
startActivity(this)
}
}
}
GitHub Commit
https://github.com/netrance/dorian-steem-apps/commit/6e9a9805b4e8c5a916c99bb760266eb48353993b
마치며...
이렇게 오늘은 버그 수정을 마쳤네요. 이와 같이 개발에서는 신규 기능 개발을 못 하고 버그 수정을 대신 해야 하는 경우가 왕왕 발생합니다. 가능한 버그 없는 코드를 만드는 것이 제일 좋겠지요. 가능한 이상향에 가깝게 개발할 수 있다면, 그게 실력이 있다는 뜻일 것입니다.
지난 스팀 앱 개발기
- #88 - 보팅 리스트 화면에 스팀잇 계정 검색 기능 추가
- #87 - 보팅 리스트 화면 개선: (1) 다운보팅도 보여주기 (2) 계정 썸네일 로딩 속도 개선
- #86 - 보팅 리스트 관련 데이터 클래스 보완
- #85 - 보팅 리스트 화면 구현
- #84 - 보팅 리스트 화면 구현을 위한 데이터 클래스 추가/변경
- #83 - 포스트의 보팅 리스트에서 각 보팅의 가치 계산 방법 정리
- #82 - 포스트의 보팅 리스트에서 각 보팅의 가치는 어떻게 계산해야 하나?
- #81 - 보팅 리스트 화면 개발 예정
- #80 - 버그 수정: 태그 화면 시작시 bridge.get_ranked_posts API가 여러 번 실행되는 문제
- #79 - 태그 화면에 새로 고침 기능 추가
- #78 - 태그 화면에서 포스트들의 디폴트 썸네일 변경
- #77 - 태그 화면에서 썸네일 없는 포스트 항목에 엉뚱한 썸네일이 보이는 오류
- #76 - 태그 검색시 앱이 죽는 버그 수정
- #75 - 태그 화면의 포스트 항목에 태그/커뮤니티 표시
- #74 - 태그 화면에서 포스트 리스트 추가 로딩시 깜빡임 문제 해결
- #73 - 태그 화면의 포스트 리스트에 무한 스크롤 적용
- #72 - 태그 화면의 포스트 리스트에서 항목들 사이 분리선 보이기
- #71 - 태그 화면에서 포스트 항목들의 썸네일 로딩
- #70 - 태그 화면 1차 구현
- #69 - 태그 화면에 데이터 바인딩 적용
- #68 - 태그 화면(TagsFragment) 구성
- #67 - TagsViewModel 클래스에 포스트 리스트 구하는 메소드 그리고 라이브 데이터 추가
- #66 - bridge.get_ranked_posts API 연동 구현: ReadRankedPostsUseCase 클래스 추가
- #65 - bridge.get_ranked_posts API 연동 구현: SteemRepository 인터페이스, SteemRepositoryImpl 클래스 수정
- #64 - bridge.get_ranked_posts API 연동 구현: SteemService 인터페이스에 메소드 추가
- #63 - bridge.get_ranked_posts API 관련 데이터 클래스 추가 수정
- #62 - bridge.get_ranked_posts API의 응답 자료를 맡을 데이터 클래스 수정
- #61 - layout_post_item.xml 수정 후 예상치 못한 빌드 오류
- #60 - bridge.get_ranked_posts API의 응답 자료를 맡을 데이터 클래스 정의
- #59 - 태그별 포스트 리스트를 구하기 위한 bridge.get_ranked_posts API
- #58 - 포스트 리스트를 구성할 항목의 레이아웃 (3) 데이터 클래스 정의 및 데이터 바인딩 적용
- #57 - 포스트 리스트를 구성할 항목의 레이아웃 (2)
- #56 - 포스트 리스트를 구성할 항목의 레이아웃
- #55 - .gitignore 파일 작성
- #54 - RxJava 관련 메모리 누수 방지 코드 작성
- #53 - 버그 수정: 인터넷 미연결시 API 실행하면 앱 강제 종료
- #52 - 인터넷 미연결시 API 실행하면 어떻게 될까?
- #51 - 파워다운 끝났으나 SP to power down 값이 0이 아닌 버그
- #1 ~ #50
Posted through the AVLE Dapp (https://avle.io)
[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.
와우 오픈소스인가용? 👍 기능 구현하느라 버그 잡느라 고생이 많으십니다.