Guest User

Passing of data between child/parent fragments

a guest
Jan 20th, 2021
14
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.58 KB | None | 0 0
  1. //ParentFragment.kt
  2.  
  3. package ru.alexandrkozlovskiy.fragmentissue
  4.  
  5. import android.os.Bundle
  6. import androidx.fragment.app.Fragment
  7. import android.view.LayoutInflater
  8. import android.view.View
  9. import android.view.ViewGroup
  10. import android.widget.Button
  11. import android.widget.TextView
  12. import android.widget.Toast
  13. import androidx.core.os.bundleOf
  14. import androidx.core.view.isVisible
  15.  
  16. class ParentFragment : Fragment() {
  17. private lateinit var test: Button
  18. override fun onCreate(savedInstanceState: Bundle?) {
  19. super.onCreate(savedInstanceState)
  20. childFragmentManager.setFragmentResultListener("", this) { key, bundle ->
  21. test.isVisible = false
  22. Toast.makeText(context, "information received from child fragment", 1).show()
  23. childFragmentManager.setFragmentResult("", bundleOf(Pair("word", "test")))
  24. }
  25. }
  26.  
  27. override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
  28. savedInstanceState: Bundle?): View? {
  29. val view = inflater.inflate(R.layout.fragment_parent, container, false)
  30. test = view.findViewById(R.id.test) as Button
  31. val fragment: ChildFragment = ChildFragment()
  32. childFragmentManager.beginTransaction().replace(R.id.childcontainer, fragment, "child").commit()
  33. return view
  34. }
  35. }
  36. //ChildFragment.kt
  37.  
  38. package ru.alexandrkozlovskiy.fragmentissue
  39.  
  40. import android.os.Bundle
  41. import androidx.fragment.app.Fragment
  42. import android.view.LayoutInflater
  43. import android.view.View
  44. import android.view.ViewGroup
  45. import android.widget.TextView
  46. import android.widget.Toast
  47. import androidx.core.os.bundleOf
  48.  
  49. class ChildFragment : Fragment() {
  50. private lateinit var childView: TextView
  51. private fun sendInfoToParentFragment() {
  52. parentFragmentManager.setFragmentResult("", bundleOf(Pair("word", "child")))
  53. }
  54.  
  55. override fun onCreate(savedInstanceState: Bundle?) {
  56. super.onCreate(savedInstanceState)
  57. parentFragmentManager.setFragmentResultListener("", this) { key, bundle ->
  58. Toast.makeText(context, "Receiving information from parent fragment", 1).show()
  59. }
  60. sendInfoToParentFragment()
  61. }
  62.  
  63. override fun onCreateView(
  64. inflater: LayoutInflater, container: ViewGroup?,
  65. savedInstanceState: Bundle?
  66. ): View? {
  67. val view = inflater.inflate(R.layout.fragment_child, container, false)
  68. childView = view.findViewById(R.id.childtest) as TextView
  69. childView.setOnClickListener {
  70. sendInfoToParentFragment()
  71. }
  72. return view
  73. }
  74. }
  75. //MainActivity.kt
  76.  
  77. package ru.alexandrkozlovskiy.fragmentissue
  78.  
  79. import androidx.appcompat.app.AppCompatActivity
  80. import android.os.Bundle
  81.  
  82. class MainActivity : AppCompatActivity() {
  83. override fun onCreate(savedInstanceState: Bundle?) {
  84. super.onCreate(savedInstanceState)
  85. setContentView(R.layout.activity_main)
  86. val fragment:ParentFragment= ParentFragment()
  87. supportFragmentManager.beginTransaction().replace(R.id.maincontainer,fragment,"parent").commit()
  88. }
  89. }
  90. //build.gradle
  91.  
  92. plugins {
  93. id 'com.android.application'
  94. id 'kotlin-android'
  95. }
  96.  
  97. android {
  98. compileSdkVersion 30
  99. buildToolsVersion "30.0.3"
  100.  
  101. defaultConfig {
  102. applicationId "ru.alexandrkozlovskiy.fragmentissue"
  103. minSdkVersion 16
  104. targetSdkVersion 30
  105. versionCode 1
  106. versionName "1.0"
  107.  
  108. testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
  109. }
  110.  
  111. buildTypes {
  112. release {
  113. minifyEnabled false
  114. proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
  115. }
  116. }
  117. compileOptions {
  118. sourceCompatibility JavaVersion.VERSION_1_8
  119. targetCompatibility JavaVersion.VERSION_1_8
  120. }
  121. kotlinOptions {
  122. jvmTarget = '1.8'
  123. }
  124. }
  125.  
  126. dependencies {
  127.  
  128. implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
  129. implementation 'androidx.core:core-ktx:1.3.2'
  130. implementation 'androidx.appcompat:appcompat:1.2.0'
  131. implementation 'com.google.android.material:material:1.2.1'
  132. implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
  133. implementation 'androidx.fragment:fragment:1.3.0-rc01'
  134. implementation 'androidx.legacy:legacy-support-v4:1.0.0'
  135. testImplementation 'junit:junit:4.+'
  136. androidTestImplementation 'androidx.test.ext:junit:1.1.1'
  137. androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
  138. }
Add Comment
Please, Sign In to add comment