Android 在片段之间传递数据时出错
我试图在两个片段之间传递数据,但在启动fullFragment时,执行过程中出现了参数错误 我更新了我的代码 你能帮我吗 架构: ListFragment(发件人): 我不知道“newFragment.arguments=args”做什么,因为在FullFragment类中我没有看到任何具有该名称的变量,但是您必须使用“Fragment.setArguments(Bundle)”从第一个变量设置片段参数。然后在全文中,您将从“FullFragment.getArguments()”方法得到正确的结果 PS:别忘了在Fragment类中上下文可以为NULL,应该以正确的方式处理它。我不知道“newFragment.arguments=args”是做什么的,因为在FullFragment类中我没有看到任何具有该名称的变量,但是您必须使用“Fragment.setArguments(Bundle)”从第一个变量设置片段参数。然后在全文中,您将从“FullFragment.getArguments()”方法得到正确的结果Android 在片段之间传递数据时出错,android,kotlin,android-fragments,Android,Kotlin,Android Fragments,我试图在两个片段之间传递数据,但在启动fullFragment时,执行过程中出现了参数错误 我更新了我的代码 你能帮我吗 架构: ListFragment(发件人): 我不知道“newFragment.arguments=args”做什么,因为在FullFragment类中我没有看到任何具有该名称的变量,但是您必须使用“Fragment.setArguments(Bundle)”从第一个变量设置片段参数。然后在全文中,您将从“FullFragment.getArguments()”方法得到正确
PS:别忘了在Fragment类中上下文可以为NULL,应该以正确的方式处理它。Hello。正如我们所看到的,共享代码和日志之间存在差异。您正在创建
ListeFragment
,但在日志中我们发现FullFragment
的错误。你能重新检查一下导航部分吗?如果不是导航问题,请在帖子中添加更多详细信息。我更新了我的代码没有崩溃,但value1为空。首先,在你的ListFragment中,你可以在var photo1中获得imagebutton。使用photo1而不是imagebutton本身。在FullFragment中,请尝试在oncreateView中声明getArgument,而不是在创建时声明getArgument。我希望对你有帮助。正如我们所看到的,共享代码和日志之间存在差异。您正在创建ListeFragment
,但在日志中我们发现FullFragment
的错误。你能重新检查一下导航部分吗?如果不是导航问题,请在帖子中添加更多详细信息。我更新了我的代码没有崩溃,但value1为空。首先,在你的ListFragment中,你可以在var photo1中获得imagebutton。使用photo1而不是imagebutton本身。在FullFragment中,请尝试在oncreateView中声明getArgument,而不是在创建时声明getArgument。我希望这会有帮助
class ListeFragment : Fragment() {
companion object {
fun newInstance(s: String) = ListeFragment()
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View {
val layout = inflater.inflate(R.layout.liste_fragment, container, false)
val photo1 = layout.findViewById<ImageView>(R.id.imageButton1)
val model = ViewModelProviders.of(this).get(ListeViewModel::class.java)
imageButton1.setOnClickListener {
val newFragment = FullFragment()
val args = Bundle()
args.putString("key1", "data")
newFragment.arguments = args
Navigation.findNavController(imageButton1).navigate(R.id.versFullFragment);
}
class FullFragment : Fragment() {
companion object {
fun newInstance() = FullFragment()
}
private lateinit var viewModel: FullViewModel
override fun onCreate( savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
var value1 = getArguments()?.getString("key1")
Log.v("value" , value1.toString())
Toast.makeText(context, value1.toString(), Toast.LENGTH_SHORT).show()
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val layout = inflater.inflate(R.layout.full_fragment, container, false)
return layout
}