이번 시간에는 액티비티(Activity) 화면에서 프래그먼트(Fragment) 화면으로 데이터를 전달하는 방법을 알아보겠습니다.
2022.01.08 - [안드로이드] - [안드로이드 스튜디오] 프래그먼트(Fragemnt) 만드는 방법
- 설명 -
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>
- 설명 -
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
}
}
- 설명 -
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>
- 설명 -
1. val bundle: Bundle = Bundle()
프래그먼트에 데이터를 전송하기 위해 Bundle를 이용한다.
2. bundle.putString("message", message)
키값과 값을 같이 넘겨준다.
3. mainFragment.arguments = bundle
bundle를 arguments에 넣어준다.
4. transaction.replace(R.id.frameLayout, mainFragment).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 - [안드로이드] - [안드로이드 코틀린] 자동완성 텍스트뷰 쉽게 만드는 방법
2022.07.11 - [안드로이드] - [안드로이드 코틀린] 스피너(spinner) 드롭다운 사용방법
2022.07.12 - [안드로이드] - [안드로이드 코틀린] 스피너(Spinner) 드롭다운 배경 색상 바꾸는 방법
[안드로이드 코틀린] OnClickListener onClick 하나로 다중 버튼 이벤트 설정하기 (0) | 2022.07.17 |
---|---|
[안드로이드 코틀린] 프래그먼트(Fragment)에서 액티비티(Activity)로 데이터 보내는 방법 (0) | 2022.07.16 |
[안드로이드 코틀린] Custom Spinner 쉽게 만드는 방법 part2 (0) | 2022.07.14 |
[안드로이드 코틀린] Custom Spinner 쉽게 만드는 방법 part1 (0) | 2022.07.13 |
[안드로이드 코틀린] 스피너(Spinner) 드롭다운 배경 색상 바꾸는 방법 (0) | 2022.07.12 |
댓글 영역