当前位置: 首页 > 知识库问答 >
问题:

如何传递片段和活动并从中获取价值

澹台俊达
2023-03-14

如何从片段和活动中传递和获取值?

共有3个答案

戚建白
2023-03-14

使用此命令将参数发送到片段

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)
龙高歌
2023-03-14

这有一个伴星(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)
邵繁
2023-03-14

这是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)也不起作用//无论我做什么,应用程序都会崩溃