【发布时间】:2021-12-30 15:31:38
【问题描述】:
我需要将数据从一个片段发送到另一个片段,但似乎无法解决。 有人有什么想法吗?
这是 MainActivity.kt 中的一些代码:
lateinit var movieId: String
fun setMovie(movietitle: String){
this.movieId = movietitle
}
fun getMovie(): String {
return movieId
}
这是在第一个片段中:
var movieId: TextView = view.findViewById<EditText>(R.id.TitleId)
(activity as MainActivity).setMovie(movieId.toString())
这是我想要接收字符串的片段:
searchMovieByTitle((activity as MainActivity).getMovie())
我可以通过其他方式接收数据吗?
【问题讨论】:
-
this 有帮助吗?您可以使用 ViewModel 在 Activity 和 Fragment 之间共享数据
-
变量movieId在MainActivity中声明。我将它设置在 FirstFragment 中,我需要将其传输到 SecondFragment 但从上面的代码传输的数据是一些随机文本。两个片段使用一个变量。我的问题是:如何将字符串从一个片段发送到另一个片段?
-
@jjorigin 如果您使用导航组件,可以考虑使用 SafeArgs,因为您只有一个数据要移动。 developer.android.com/guide/navigation/navigation-pass-data
-
"变量 movieId 在 MainActivity 中声明" - 如果您在共享 ViewModel 中声明它,那么所有组件都可以访问它并观察它的变化。看看我链接的问题。此外,
movieId.toString()不会返回 EditText 中的文本,如果您想要 EditText 中的文本,请使用movieId.getText().toString()
标签: android kotlin android-fragments