首页 > 解决方案 > Kotlin - 传递给 Fragment 时 Activity 中的路径显示为 null 然后更改值

问题描述

我有一种情况,我试图将路径从 Activity 传递到 Fragment。下面是我的 MainActivity.kt 文件的片段:

MainActivity.kt

override fun onCreate(savedInstanceState: Bundle?) {
        val myDir = File(getApplicationContext()?.getExternalFilesDir(null)?.toString() + "/")
        // below line displays the path
        Toast.makeText(applicationContext, "MainActivity: " + myDir.toString(), Toast.LENGTH_LONG).show()

        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val bundle = Bundle()
        bundle.putString("path", myDir.toString())
        // set MainActivityFragment Arguments
        val fragobj = MainActivityFragment()
        fragobj.setArguments(bundle)

        val manager = supportFragmentManager

        // Begin the fragment transition using support fragment manager
        val transaction = manager.beginTransaction()

        // add the fragment on container
        transaction.replace(R.id.main_fragment, fragobj)

        // Finishing the transition
        transaction.commit()

        strPackName = getApplicationContext().getPackageName()
    }

以及接收信息的 MainActivityFragment.kt 片段。

MainActivityFragment.kt

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        val strPath = getArguments()?.getString("path")
        val view: View = inflater.inflate(R.layout.fragment_main, container, false)

        // initially displays this value as null but then changes to value from MainActivity.kt
        Toast.makeText(getActivity()?.getApplicationContext(), "MainActivityFragment: " + strPath, Toast.LENGTH_LONG).show()
    }

路径值最初显示为 null,但随后我收到另一条 Toast 消息,指出该值从 MainActivity 更改为原始值。有没有办法防止这种情况,以便我只收到一条显示路径值的 Toast 消息?先感谢您。

标签: androidkotlin

解决方案


您在 Activity 中使用了 Toast 2 次,在 Fragment 中使用了 1 次,我认为您只需要在 Fragment 中使用 Toast,这样就可以从 Activity 中移除 Toast。


推荐阅读