如何从片段和活动中传递和获取值?
使用此命令将参数发送到片段
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)
这有一个伴星(https://kotlinlang.org/docs/reference/object-declarations.html#companion-对象)
像往常一样定义你的片段,并声明在Java中充当静态newInstance()等效物的伴随器:
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)
这是Android Studio提出的解决方案(=当您使用文件创建空白片段时-
把这个放在你的片段中:
class MyFragment: Fragment {
...
companion object {
@JvmStatic
fun newInstance(isMyBoolean: Boolean) = MyFragment().apply {
arguments = Bundle().apply {
putBoolean("REPLACE WITH A STRING CONSTANT", isMyBoolean)
}
}
}
}
。应用程序
是在创建对象时设置数据的好技巧,或者正如他们在这里所说:
以< code>this值作为接收方调用指定的函数[block],并返回< code>this值。
然后在您的活动或片段中执行以下操作:
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
}
}
享受静态编程语言的魔力!
我目前正在制作一个android应用程序,我想在activity和fragment之间传递一个日期。我的活动有一个按钮,打开片段:DatePickerFragment。 在我的活动中,我显示了一个日期,我想用片段修改它。因此,我想将日期传递给datepicker,并将其发送回活动。 我已经尝试了很多解决方案,但都没有奏效。简单的方法是传递一个参数,但这不能用片段来完成。
这可能是一个愚蠢的问题,但我正在努力解决如何在activity和viewpager之间传递值的问题。现在让我解释一下我的要求,我有两个标签,即任务和调用。当用户按下任务中的一个按钮,它将从中转到新活动时,将有两种形式:一种是edittext,另一种是spinner,需要从该活动数据在任务片段中填充listview。到目前为止,我尝试的是: 这是我的主要活动: 这是我的任务片段(在这里填充listv
当我关闭一个活动时,我希望它将一个值传递给另一个活动中的一个片段,我该怎么做? 活动B 片段A 代码不起作用,因为它给了我一个错误 谢啦
我一直试图使用bundle将数据从主活动传递到片段。我已经使用TabLayout和ViewPager以Tab格式添加活动的片段。我没有得到任何错误,但我得到一个null对象作为返回,它显示“错误”在我的第一个片段,因为我已经添加了一个If条件为null对象。这是我的密码 谁能建议我为什么从主活动到片段得到一个空对象,以及如何将多个数据从主活动转移到其他片段,也就是第二和第三个片段。
问题内容: 我托管了5个片段,在每个片段上我都需要填写一些字段。 我想从中获取这些字段的值。我尝试了类似的东西: AddActivity.java FragPagerAdapter.java OtherFragment.java 公共类OtherFragment扩展Fragment {Button btn; 更新 的问题我总是得到EditText(而其他字段要获得)的问题等于null如果它们位于片
//使用startActivity(intent)也不起作用//无论我做什么,应用程序都会崩溃