fun newInstance(index: Int): MyFragment {
val f = MyFragment ()
// Pass index input as an argument.
val args = Bundle()
args.putInt("index", index)
f.setArguments(args)
return f
}
得到这样的论点
val args = arguments
val index = args.getInt("index", 0)
2
val otpFragment = OtpFragment()
val bundle = Bundle()
bundle.putString("otp", loginDetails[0].otp)
otpFragment.arguments = bundle
CommonUtil.changeFragment(otpFragment, R.id.flLogin, Login.manager, R.anim.enter_anim, R.anim.exit_anim)
val fragment = MyFragment.newInstance(false)
... // transaction stuff happening here
并阅读片段中的参数,例如:
private var isMyBoolean = false
override fun onAttach(context: Context?) {
super.onAttach(context)
arguments?.getBoolean("REPLACE WITH A STRING CONSTANT")?.let {
isMyBoolean = it
}
}
享受Kotlin的神奇!
7
传递并从片段和活动中获取 Value ,
val mFragment = Fragment()
val mArgs = Bundle()
mArgs.putInt("Key", value)
mFragment.setArguments(mArgs)
在第二个 Activity / Fragment 中使用这段代码来获取您的值 .
var args = getArguments()
var index = args.getInt("Key", 0)
2
在java中调用的简单方法....就像这样
class ViewStackListFragment : Fragment() {
companion object {
fun newInstance(position: Int): ViewStackListFragment {
val fragment = ViewStackListFragment()
val args = Bundle()
args.putInt("position", position)
fragment.setArguments(args)
return f
}
}
class ViewStackListFragment : Fragment() {
companion object {
fun newInstance(position: Int): ViewStackListFragment {
val fragment = ViewStackListFragment()
val args = Bundle()
args.putInt("position", position)
fragment.setArguments(args)
return fragment
}
}
}
简单地在Java中调用它:
val fragment = ViewStackListFragment.newInstance(4)
0
以更多的Kotlin风格来做
1)创建内联函数:
inline fun <FRAGMENT : Fragment> FRAGMENT.putArgs(argsBuilder: Bundle.() -> Unit): FRAGMENT = this.apply { arguments = Bundle().apply(argsBuilder) }
2)现在您可以在所有片段中使用此扩展而无需重复代码:
class MyFragment: Fragment() {
companion object {
fun newInstance(name: String) = MyFragment().putArgs {
putString("nameKey", name)
}
}
}
class MyFragment1: Fragment() {
companion object {
fun newInstance(boolean: Boolean) = MyFragment1().putArgs {
putBoolean("booleanKey", boolean)
}
}
}
3)创建你的片段:
val myFragment = MyFragment.newInstance("NAME")
val myFragment1 = MyFragment1.newInstance(true)
7 回答
用它来发送片段的参数
得到这样的论点
这是Android Studio提出的解决方案(当您使用文件创建空白片段 - >新建 - >片段 - >片段(空白)并检查“包含片段工厂方法”时) .
把它放在你的碎片中:
.apply
是在创建对象时设置数据的一个很好的技巧,或者they state here:然后在你的Activity或Fragment中:
并阅读片段中的参数,例如:
享受Kotlin的神奇!
传递并从片段和活动中获取 Value ,
在第二个
Activity
/Fragment
中使用这段代码来获取您的值 .在java中调用的简单方法....就像这样
}
有伴侣对象(https://kotlinlang.org/docs/reference/object-declarations.html#companion-objects)
像往常一样定义片段,并声明在Java中充当静态newInstance()等效项的伴侣:
简单地在Java中调用它:
以更多的Kotlin风格来做
1)创建内联函数:
2)现在您可以在所有片段中使用此扩展而无需重复代码:
3)创建你的片段: