【发布时间】:2020-10-10 01:12:35
【问题描述】:
我知道这个问题被问了太多次,但没有一个证明对我有用。 我正在尝试使用接口将 Fragment1 的 EditText 中的输入传递给 Fragment2 中的 TextView 并共享一个 Activity,但我已经坚持了一天多。问题是我从 MainActivity 发送的参数始终为空。
这是我的界面:
interface SendData {
fun sendData(name: String)
}
还有 Fragment1.kt:
class Fragment1 : Fragment() {
private lateinit var communicator: SendData
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val rootView = inflater.inflate(R.layout.fragment1_layout, container, false)
communicator = activity as SendData
rootView.btn_send.setOnClickListener {
communicator.sendData(rootView.name_ET.text.toString())
}
return rootView
}
}
Fragment2.kt
class Fragment2 : Fragment() {
var receivedName: String? = ""
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
receivedName = arguments?.getString("NAME")
Log.d("Fragment2", "Receiving: ${arguments.toString()}")
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val rootView = inflater.inflate(R.layout.fragment2_layout, container, false)
rootView.receivedName_TV.text = receivedName
return rootView
}
}
还有 MainActivity.kt
class MainActivity : AppCompatActivity(), SendData {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
supportFragmentManager.beginTransaction().replace(R.id.fragment_container, Fragment1())
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE).commit()
}
override fun sendData(name: String) {
Fragment2().apply {
arguments = Bundle().apply {
putString("NAME", name)
}
Log.d("Fragment1", "Sending: ${arguments.toString()}")
}
supportFragmentManager.beginTransaction().replace(R.id.fragment_container, Fragment2())
.addToBackStack("Fragment2").setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE).commit()
}
}
我使用的是resource,我什至将我的代码与他们的代码逐行进行了比较,但我看不出我做错了什么。 感谢您提前提供帮助。
【问题讨论】:
标签: android android-fragments kotlin parameter-passing mobile-application