이번 시간에는 프래그먼트(Fragment)에서 액티비티(Activity)로 데이터를 전달하는 방법에 대하여 알아보겠습니다.
- 설명 -
1. 프래그먼트에서 액티비티로 데이터를 전달하기 위한 인터페이스
2. 틀만 만들고 기능은 implement 한 클래스에서 구현합니다.
interface SendEventListener {
fun sendMessage(message: String)
}
2022.01.08 - [안드로이드] - [안드로이드 스튜디오] 프래그먼트(Fragemnt) 만드는 방법
- 설명 -
메시지를 전달하는 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>
- 설명 -
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
}
}
- 설명 -
프래그먼트 화면 보여줄 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>
- 설명 -
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 - [안드로이드] - [안드로이드 코틀린] 자동완성 텍스트뷰 쉽게 만드는 방법
2022.07.11 - [안드로이드] - [안드로이드 코틀린] 스피너(spinner) 드롭다운 사용방법
2022.07.15 - [안드로이드] - [안드로이드 코틀린] 액티비티(Activity)에서 프래그먼트(Fragment)로 데이터 보내는 방법
[안드로이드 코틀린] 포커스 이벤트 숫자(천 단위) 콤마 넣는 방법 (0) | 2022.07.18 |
---|---|
[안드로이드 코틀린] OnClickListener onClick 하나로 다중 버튼 이벤트 설정하기 (0) | 2022.07.17 |
[안드로이드 코틀린] 액티비티(Activity)에서 프래그먼트(Fragment)로 데이터 보내는 방법 (0) | 2022.07.15 |
[안드로이드 코틀린] Custom Spinner 쉽게 만드는 방법 part2 (0) | 2022.07.14 |
[안드로이드 코틀린] Custom Spinner 쉽게 만드는 방법 part1 (0) | 2022.07.13 |
댓글 영역