# PRJ_3. 커뮤니티 게시판 앱_(7) 게시글 작성 화면 구성

728x90

🟦 40강. 게시글 작성 화면 구성

▶️ 게시글 작성 화면 구성

  • 게시글 리스트 화면에서 메뉴 클릭 시, 게시글 작성하는 화면 나타나도록 한다.
  • 여기서는 이미지 첨부가 가능하도록 구현할 것이다.

🟧 스피너 Spinner란?

  • 스피너 : 값 집합에서 하나의 값을 선택할 수 있는 방법을 제공하는 것.
  • 사용자가 스피너 클릭 시, 사용한 모든 값을 ‘드롭 다운’ 메뉴 형태로 내놓는다. 여기서 사용자가 원하는 값을 선택할 수 있다.
  • 여기서는 사용자가 글 작성 시, 게시판 종류를 고를 수 있도록 하기 위해 사용한다.

◾BoardWriteFragment.kt

  • 1) Spinner 생성해서 어댑터 연결한 뒤 이벤트 처리했다.
  • 2) 이 글쓰기 프래그먼트의 툴바에 ‘메뉴’ 배치하여 이벤트 처리 (카메라/갤러리/업로드)
  • 3) 만약 사용자가 업로드 버튼을 클릭하게 되면 백스택에 이전 기록을 삭제하기 위하여 fragmentRemoveBackStack() 호출하였다.
    • 만약 사용자가 글 작성 후 업로드 처리하고 ‘뒤로가기’ 클릭 시, 곧장 읽기 화면으로 가도록 하기 위함.
package com.example.app3_communityapp

import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ArrayAdapter
import com.example.app3_communityapp.databinding.FragmentBoardWriteBinding

class BoardWriteFragment : Fragment() { //'게시글' 쓰기 프래그먼트 화면

    //바인딩 설정
    lateinit var boardWriteFragmentBinding: FragmentBoardWriteBinding

    val spinner_data =arrayOf("게시판1", "게시판2", "게시판3", "게시판4")

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

    }

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        // Inflate the layout for this fragment
        boardWriteFragmentBinding = FragmentBoardWriteBinding.inflate(inflater)
        //게시글 작성 프래그먼트의 Toolbar 관련 처리
        boardWriteFragmentBinding.boardWriteToolbar.title= "게시글 작성"
        boardWriteFragmentBinding.boardWriteToolbar.inflateMenu(R.menu.board_write_menu)
        boardWriteFragmentBinding.boardWriteToolbar.setOnMenuItemClickListener{
when (it.itemId) {
                R.id.board_write_menu_camera-> {
                    true
                }
                R.id.board_write_menu_gallery-> {
                    true
                }
                R.id.board_write_menu_upload-> { //사용자가 업로드 버튼 클릭 시
                    val act =activityas BoardMainActivity
                    act.fragmentRemoveBackStack("board_write")
                    act.fragmentController("board_read", true, true)
                    true
                }
                else -> false
            }
}
//spinner 어댑터 생성
            val spinnerAdapter = ArrayAdapter(
                requireContext(), android.R.layout.simple_spinner_item, spinner_data
            )

            spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
            boardWriteFragmentBinding.boardWriteType.adapter= spinnerAdapter

            return boardWriteFragmentBinding.root
    }
}

🟧최종 모습

728x90