Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在kotlin中从一个片段导航回另一个片段?_Android_Kotlin - Fatal编程技术网

Android 如何在kotlin中从一个片段导航回另一个片段?

Android 如何在kotlin中从一个片段导航回另一个片段?,android,kotlin,Android,Kotlin,我正在通过单击“编辑”按钮从信息片段导航到设置片段。 现在我试图点击“返回”按钮,从设置片段返回信息片段,但当我点击“返回”按钮时,我只能看到一个没有任何显示的空信息片段 下面是我的代码 在InfoFragment.kt中 private lateinit var data: ReloadResult companion object { fun newInstance(data: ReloadResult) = ReloadInfoFr

我正在通过单击“编辑”按钮从信息片段导航到设置片段。 现在我试图点击“返回”按钮,从设置片段返回信息片段,但当我点击“返回”按钮时,我只能看到一个没有任何显示的空信息片段

下面是我的代码

在InfoFragment.kt中

    private lateinit var data: ReloadResult
        
        companion object {
        fun newInstance(data: ReloadResult) = ReloadInfoFragment().apply {
                    arguments = Bundle().apply {
                        putSerializable("RELOADDATA", data)
                    }
                }
            }
        
        override fun onCreate(savedInstanceState: Bundle?) {
                super.onCreate(savedInstanceState)
            }
        
        
            override fun onAttach(context: Context) {
                super.onAttach(context)
                arguments?.getSerializable("RELOADDATA")?.let {
                    data = it as ReloadResult
                }
        
            }
        
           override fun onCreateView(
                inflater: LayoutInflater,
                container: ViewGroup?,
                savedInstanceState: Bundle?
            ): View? {
                mActivity = activity as ReloadActivity
                val view = inflater.inflate(R.layout.auto_reload_info, container, false)
                
                return view
            }
        
          override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
                super.onViewCreated(view, savedInstanceState)
                initData()// a function to initialise my data needed for this fragment page
            }


    override fun onClick(view: View?) {
        when (view?.id) {
       
            R.id.edit_button -> {                
SettingClickListener?.SettingClick(
                  "20",
                  "40"
                )
            }
        }
    }
在包含信息片段和设置片段的重载活动中

//when user press back in setting fragment
 titleView.setOnLeftClick {
        if (isSettingPage) {
            switchFragment(infoFragment)
        } else {
            this.finish()
        }

    }

private fun switchFragment(fragment: Fragment): FragmentTransaction {
    val fragmentTransaction: FragmentTransaction = supportFragmentManager.beginTransaction()
    if (!fragment.isAdded) {
        fragmentTransaction.hide(currentFragment)
        fragmentTransaction.replace(R.id.frame_layout, fragment, "Fragment")
            .addToBackStack(null)
            .commit()
    } else {
        fragmentTransaction.hide(currentFragment).show(fragment)
    }
    currentFragment = fragment
    return fragmentTransaction
}

如何从一个片段“返回”到另一个片段,并恢复页面显示的原样?请在清单写入的活动标记中帮助我

android:configChanges="orientation|screenSize"
例如:

<activity android:name=".ReloadActivity"
            android:configChanges="orientation|screenSize">

编辑:

检查推荐的黑色代码以替换片段中的片段

activity.supportFragmentManager.commit {
            replace<FragmentClass>(R.id.fragment_id)
            setReorderingAllowed(true)
            addToBackStack("name") // name can be null
        }
activity.supportFragmentManager.commit{
替换(R.id.fragment\U id)
setReorderingAllowed(真)
addToBackStack(“名称”)//名称可以为空
}

使用
setReorderingAllowed(true)
它可能会解决问题

我已经添加了它,但它对我没有帮助@拉胡尔