在Android中,如果要将参数传递给片段类,建议使用工厂方法。
class CallFragment : BaseFragment() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val view = inflater.inflate(R.layout.fragment_create, container, false)
val title = arguments!!.getString(ARGUMENT_TITLE)
val description = arguments!!.getString(ARGUMENT_DESCRIPTION)
val location = arguments!!.getString(ARGUMENT_LOCATION)
val status = arguments!!.getString(ARGUMENT_STATUS)
return view
}
companion object {
private const val ARGUMENT_TITLE = "ARGUMENT_TITLE"
private const val ARGUMENT_DESCRIPTION = "ARGUMENT_DESCRIPTION"
private const val ARGUMENT_LOCATION = "ARGUMENT_LOCATION"
private const val ARGUMENT_STATUS = "ARGUMENT_STATUS"
fun newInstance(title: String, description: String, location: String, status: String): CallFragment {
return CallFragment().apply {
val args = Bundle().apply {
putString(ARGUMENT_TITLE, title)
putString(ARGUMENT_DESCRIPTION, description)
putString(ARGUMENT_LOCATION, location)
putString(ARGUMENT_STATUS, status)
}
arguments = args
}
}
}
}
在活动中使用下面的片段
override fun onTabSelected(p0: TabLayout.Tab?) {
val position = p0?.position
when (position) {
0 ->
supportFragmentManager.beginTransaction().replace(
R.id.frame_container,
CallFragment.newInstance(mWorkOrder.title,mWorkOrder.description,mWorkOrder.location.name,mWorkOrder.status)
).addToBackStack(null).commit()
}
}