상세 컨텐츠

본문 제목

[안드로이드 코틀린] 액티비티(Activity)에서 프래그먼트(Fragment)로 데이터 보내는 방법

안드로이드

by aries574 2022. 7. 15. 14:58

본문


이번 시간에는 액티비티(Activity) 화면에서 프래그먼트(Fragment) 화면으로 데이터전달하는 방법을 알아보겠습니다.


목차

1. 실행 화면
2. 프래그먼트 만들기 MainFragment.kt
3. 메인 화면 구현 activity_main.xml
4. 메인 코드 구현 MainActivity.kt


1. 실행 화면


2. 프래그먼트 만들기 MainFragment.kt

2022.01.08 - [안드로이드] - [안드로이드 스튜디오] 프래그먼트(Fragemnt) 만드는 방법

 

[안드로이드 스튜디오] 프래그먼트(Fragemnt) 만드는 방법

이번 시간에는 안드로이드 스튜디오에서 프래그먼트 화면을 추가하는 방법을 알아보겠습니다. app 선택 -> 마우스 오른쪽 -> New -> Fragment 다양한 버전의 Fragment가 있어 쓰임에 따라 골라 만드시면

aries574.tistory.com

 

fragment_main.xml

 - 설명 -

1. 액티비티(Activity)에서 넘어온 메시지를 보여줄 TextView

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


    <TextView
        android:id="@+id/message_text"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:textSize="25sp"
        android:textStyle="bold" />

</FrameLayout>

 

MainFragment.kt

- 설명 -

1. this.arguments?.getString("message")

Activity에서 넘어온 값을  가져온다.

message는 키값이다.

class MainFragment : Fragment() {

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {

        val view: View = inflater.inflate(R.layout.fragment_main, container, false)

        //객체 생성
        val textMessage: TextView = view.findViewById(R.id.message_text)

        //넘어온 메시지 변수에 담기
        val message: String? = this.arguments?.getString("message")

        //메시지 텍스트뷰에 담기
        textMessage.text = message

        // Inflate the layout for this fragment
        return view
    }

}

 

 

3. 메인 화면 구현 activity_main.xml

- 설명 -

1. 프래그먼트 화면을 보여줄 FrameLayout

2. 메시지를 입력할 EditText

3. 메시지를 전송하는 Button

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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=".MainActivity">

    <FrameLayout
        android:id="@+id/frameLayout"
        android:layout_width="match_parent"
        android:layout_height="200dp" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/frameLayout"
        android:orientation="vertical">

        <EditText
            android:id="@+id/message_edit"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

        <Button
            android:id="@+id/send_btn"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="보내기"
            android:textSize="25sp" />
    </LinearLayout>
</RelativeLayout>


4. 메인 코드 구현 MainActivity.kt

- 설명 -

1. val bundle: Bundle = Bundle()

    프래그먼트에 데이터를 전송하기 위해 Bundle를 이용한다.

2. bundle.putString("message", message)

    키값과 값을 같이 넘겨준다. 

3. mainFragment.arguments = bundle

    bundle를 arguments에 넣어준다.

4. transaction.replace(R.id.frameLayoutmainFragment).commit()

    프래그먼트 객체와 보여줄 레이아웃 ID를 통해 메인화면에 보여준다.

class MainActivity : AppCompatActivity(){

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        //객체 생성
        val messageEdit: EditText = findViewById(R.id.message_edit)
        val sendBtn: Button = findViewById(R.id.send_btn)

        //버튼 이벤트
        sendBtn.setOnClickListener {

            //데이터를 담을 객체 생성
            val bundle: Bundle = Bundle()

            //입력 메시지
            val message: String = messageEdit.text.toString()

            //데이터 담기
            bundle.putString("message", message)

            //프래그먼트 선언
            val mainFragment: MainFragment = MainFragment()

            //프래그먼트에 데이터 넘기기
            mainFragment.arguments = bundle

            //프래그먼트 추가, 변경, 삭제 기능
            val manager: FragmentManager = supportFragmentManager

            val transaction: FragmentTransaction = manager.beginTransaction()

            //프래그먼트 화면 보여주기
            transaction.replace(R.id.frameLayout, mainFragment).commit()
        }


    }//onCreate
}

2022.07.10 - [안드로이드] - [안드로이드 코틀린] 자동완성 텍스트뷰 쉽게 만드는 방법

 

[안드로이드 코틀린] 자동완성 텍스트뷰 쉽게 만드는 방법

이번 시간에는 입력한 텍스트와 비슷한 글자를 보여줘서 자동 완성할 수 있는 기능을 알아보겠습니다. 목차 1. 실행 화면 2. 메인 화면 구현 activity_main.xml 3. 메인 코드 구현 MainActivity.kt 1..

aries574.tistory.com

2022.07.11 - [안드로이드] - [안드로이드 코틀린] 스피너(spinner) 드롭다운 사용방법

 

[안드로이드 코틀린] 스피너(spinner) 드롭다운 사용방법

이번 시간에는 여러 개의 아이템 중 하나를 선택하는 스피너(Spinner)에 대하여 알아보겠습니다. 목차 1. 실행 화면 2. 메인 화면 구현 activity_main.xml 3. 메인 코드 구현 MainActivity.kt 1. 실행..

aries574.tistory.com

2022.07.12 - [안드로이드] - [안드로이드 코틀린] 스피너(Spinner) 드롭다운 배경 색상 바꾸는 방법

 

[안드로이드 코틀린] 스피너(Spinner) 드롭다운 배경 색상 바꾸는 방법

이번 시간에는 스피너(Spinner)에 있는 아이템을 선택하면 해당 아이템에 따라 레이아웃 배경 색상을 변경해주는 방법에 대하여 알아보겠습니다. 목차 1. 실행 화면 2. 메인 화면 구현 activity_ma

aries574.tistory.com

 

반응형

관련글 더보기

댓글 영역