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

数据不从activity转移到片段

戎兴言
2023-03-14

我正在尝试编写一个从activity到片段的数据传输,但我正在捕捉“NullPointerException”代码MainActivity:

val btn1 = findViewById<Button>(R.id.button)
        btn1.setOnClickListener {
            BlankFragment2.getNewInstance(321)
            val fm = supportFragmentManager
            val ft = fm.beginTransaction()
            ft.replace(R.id.fragment, BlankFragment2())
            ft.commit()
        }

代码片段:

class BlankFragment2 : Fragment() {
    var str: Int = 0
    companion object {
        fun getNewInstance(args: Int): BlankFragment2 {
            val fragment = BlankFragment2()
            fragment.arguments?.putInt("one", args)
            return fragment
        }
    }
    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        // Inflate the layout for this fragment
        str = arguments!!.getInt("one")
        
        return inflater.inflate(R.layout.fragment_blank2, container, false)
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        val txt = view.findViewById<TextView>(R.id.textTest)
        txt.text = str.toString()
    }
}

我知道对空值的保护,但问题是,我确信传递了值,而null不在那里

共有1个答案

壤驷鸿祯
2023-03-14

而不是
ft.replace(r.id.fragment,BlankFragment2()

您应该使用

ft.replace(r.id.fragment,blankfragment2.getnewInstance(321)

因为上面的blankfragment2.getnewInstance(321)语句对FragmentManager来说是无用的。FragmentManager正在使用blankFragment2()创建片段,就像您在replace调用中提供的片段一样。这就是nullpointerexception的原因,因为实际上,您的片段根本没有得到任何int值,因为所使用的片段实例是用空构造函数创建的。

 类似资料:
  • 我是android的初学者。我试图找到一种方法将文本从活动的editText传输到片段,以便结果显示在片段的textview中。

  • 几天前,我将以前从Fabric获得的崩溃数据迁移到了Firebase。Firebase现在显示了Fabric中与crashlytics相关的数据,但是,与分析相关的数据(最新版本、保留等)却找不到。 Fabric显示数据已在两个操作系统(Android和iOS)上成功迁移,但只有我们的Android操作系统显示出这个问题(我可以在Firebase中找到我们的iOS操作系统的分析数据) 此外,我发现

  • 我有一个包含EditText的片段,当我单击该EditText时,会出现一个DatePicker对话框来选择日期。 FragmentFile 对话框片段 问题是我不知道如何将数据(选定日期)从DialogFraank传递到片段? 我读了一些主题,但这并没有帮助我感到困惑(抱歉再次提出这个问题)。 主题1主题2

  • 问题内容: 将Solr核心迁移到elasticsearch索引的最佳方法是什么? 不推荐使用solr-river-plugin(https://github.com/javanna/elasticsearch-river- solr )。 问题答案: OpenSource Connections中有一个不错的,由爱心人士精心制作的自定义Python工具,您可以用来执行以下操作: https://g

  • 问题内容: 我有一个现有的PHP / MySQL应用程序,我正尝试将其迁移到AngularJS / Firebase,以作为学习这些较新技术的一种方式。 该应用程序在MySQL中具有自己的表架构。一个这样的表如下所示: 我的问题是:如何将这个表结构及其中的数据从MySQL迁移到Firebase? 我尝试通过查询将数据导出到JSON字符串中,例如: 这给出了有效的JSON字符串,例如: 我将其保存在

  • //使用startActivity(intent)也不起作用//无论我做什么,应用程序都会崩溃