상세 컨텐츠

본문 제목

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

안드로이드

by aries574 2022. 7. 16. 11:00

본문


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


목차

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


1. 실행 화면

 


2. 인터페이스 만들기 SendEventListener.kt

- 설명 -

1. 프래그먼트에서 액티비티로 데이터를 전달하기 위한 인터페이스

2. 틀만 만들고 기능은 implement 한 클래스에서 구현합니다. 

interface SendEventListener {

    fun sendMessage(message: String)
}

 


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

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

 

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

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

aries574.tistory.com

 

fragment_main.xml

- 설명 -

메시지를 전달하는 Button

<?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">


    <Button
        android:id="@+id/send_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="전송"
        android:textSize="20sp"
        android:textStyle="bold" />

</FrameLayout>

 

MainFragment.kt

- 설명 -

1. sendEventListener: SendEventListener

  인터페이스 객체 생성

2. sendEventListener = context as SendEventListener

  인터페이스 객체 초기화

3. sendEventListener.sendMessage("프래그먼트에서 전달한 메시지")

  메인액티비티에서 sendMessage 함수를 구현하여 데이터를 받을 것입니다.

class MainFragment : Fragment() {
   
    //객체 생성
    lateinit var sendEventListener: SendEventListener

    override fun onAttach(context: Context) {
        super.onAttach(context)
        
        //초기화
        sendEventListener = context as SendEventListener
    }

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        
        val view: View = inflater.inflate(R.layout.fragment_main, container, false)
        
        //객체 생성
        val sendBtn: Button = view.findViewById(R.id.send_btn)
        sendBtn.setOnClickListener { 
            
            //값만 전달
            sendEventListener.sendMessage("프래그먼트에서 전달한 메시지")
        }
        
        return view
    }
}

 


4. 메인 화면 구성 activity_main.xml

- 설명 -

  프래그먼트 화면 보여줄 FrameLayout

<?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" />

</RelativeLayout>


5. 메인 코드 구현 MainActivity.kt

- 설명 -

1. class MainActivity : AppCompatActivity(), SendEventListener

  메인액티비티에 SendEventListener 구현

2.  override fun sendMessage(message: String) 

 프래그먼트에서 보낸 메시지 message로 받음

class MainActivity : AppCompatActivity(), SendEventListener{

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

        //객체 생성
        val mainFragment: MainFragment = MainFragment()

        val manager: FragmentManager = supportFragmentManager

        val transaction: FragmentTransaction = manager.beginTransaction()

        //프래그먼트 추가
        transaction.add(R.id.frameLayout, mainFragment)

        //적용
        transaction.commit()

    }//onCreate

    override fun sendMessage(message: String) {

        Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
    }
}

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.15 - [안드로이드] - [안드로이드 코틀린] 액티비티(Activity)에서 프래그먼트(Fragment)로 데이터 보내는 방법

 

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

이번 시간에는 액티비티(Activity) 화면에서 프래그먼트(Fragment) 화면으로 데이터를 전달하는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 프래그먼트 만들기 MainFragment.kt 3. 메인 화면 구현 

aries574.tistory.com

 

반응형

관련글 더보기

댓글 영역