Android 由于相同的id,替换的片段总是发生在viewpager的第一个片段上

Android 由于相同的id,替换的片段总是发生在viewpager的第一个片段上,android,Android,我有一个viewpager,它包含多个属于同一片段类且具有相同xml的片段(只是init值不同) 在片段内部,如果有提交操作,它将尝试侦听服务器响应,并用新片段替换当前片段作为响应 例如: 寻呼机 ->。第1页(问题片段1)->如果单击提交按钮->(回答片段1替换问题片段1) ->。第2页(问题片段2)->如果单击提交按钮->(回答片段2替换问题片段2) 问题是,如果我提交问题片段1,它会像回答片段1一样正确返回并替换问题片段1。但是,如果我在viewpager上滑动,进入QuestionFra

我有一个viewpager,它包含多个属于同一片段类且具有相同xml的片段(只是init值不同)

在片段内部,如果有提交操作,它将尝试侦听服务器响应,并用新片段替换当前片段作为响应

例如:

寻呼机

->。第1页(问题片段1)->如果单击提交按钮->(回答片段1替换问题片段1)

->。第2页(问题片段2)->如果单击提交按钮->(回答片段2替换问题片段2)

问题是,如果我提交问题片段1,它会像回答片段1一样正确返回并替换问题片段1。但是,如果我在viewpager上滑动,进入QuestionFragment2,然后在那里提交,屏幕上什么也没有发生,而AnswerFragment2实际上会替换第一页上的内容(好像我从那里滑回第1页,我实际上会在那里看到AnswerFragment2)

QuestionFragment内部的代码如下

saveButton.setOnClickListener {

   serverResonse = // Some server response
   var fragment = AnswerFragment.newInstance(map)
   fragment.setData(serverResponse)
   openFragment(fragment,"Answer_Fragment")

}

private fun openFragment(fragment: Fragment, fragmentTag: String) {
        val transaction = activity!!.supportFragmentManager.beginTransaction()
        transaction.setCustomAnimations(R.anim.fade_in, R.anim.fade_out)
        transaction.replace(R.id.Container, fragment, fragmentTag)
        transaction.addToBackStack(null)
        transaction.commit()
}
下面是viewpager适配器的代码

class MultiQAPagerAdapter (manager: FragmentManager) : FragmentStatePagerAdapter(manager, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT ) {
    private val mFragmentList: ArrayList<Fragment> = ArrayList()

    override fun getItem(position: Int): Fragment {
        return mFragmentList.get(position)
    }

    override fun getCount(): Int {
        return mFragmentList.size
    }

    override fun getItemPosition(`object`: Any): Int {
        return PagerAdapter.POSITION_NONE
    }

    fun addFragment(fragment: Fragment) {
        mFragmentList.add(fragment)
    }
}
class MultiQAPagerAdapter(管理者:FragmentManager):FragmentStatePagerAdapter(管理者,行为\仅恢复\当前\片段){
private val mFragmentList:ArrayList=ArrayList()
覆盖趣味getItem(位置:Int):片段{
返回MFFragmentList.get(位置)
}
重写fun getCount():Int{
返回MFFragmentList.size
}
重写getItemPosition(`object`:Any):Int{
返回页面RADAPTER.POSITION\u无
}
乐趣添加片段(片段:片段){
添加(片段)
}
}
我认为问题在于,因为QuestionFragment1和QuestionsFragment2使用相同的xml,因此在执行transaction.replace(R.id.Container,fragment,fragmentTag)时,要显示answerFragment,它总是替换viewpager的第一个页面片段,而不是我所在的当前页面

有没有关于我如何修复或处理这些问题的线索?谢谢你的帮助