dialogfragment中的setTargetFragment不工作-android

dialogfragment中的setTargetFragment不工作-android,android,android-fragments,fragment,android-dialogfragment,Android,Android Fragments,Fragment,Android Dialogfragment,我在另一个片段中调用一个对话框片段,如下所示: @CoursesFragmentScope class CoursesFragment : DaggerFragment(), DefaultLifecycleObserver, CourseTypeListDialogFragment.ApplySelectedCourseTypeFilter { @OnClick(R.id.btnCourseType) fun btnCourseTypeClick() {

我在另一个
片段中调用一个
对话框片段
,如下所示:

@CoursesFragmentScope
class CoursesFragment : DaggerFragment(),
    DefaultLifecycleObserver,
    CourseTypeListDialogFragment.ApplySelectedCourseTypeFilter {
    @OnClick(R.id.btnCourseType)
    fun btnCourseTypeClick() {

        val fm = activity!!.supportFragmentManager
        val courseTypeListDialogFragment =
            CourseTypeListDialogFragment()
        courseTypeListDialogFragment.isCancelable = false
        courseTypeListDialogFragment.setStyle(
            DialogFragment.STYLE_NO_TITLE,
            0
        )
        courseTypeListDialogFragment.setTargetFragment(this, 1)
        courseTypeListDialogFragment.show(fm, "")
    }
}
class CourseTypeListDialogFragment: DaggerAppCompatDialogFragment(), CourseTypeAdapter.CourseTypeListener {
    interface ApplySelectedCourseTypeFilter {
        fun applySelectedCourseType()
    }
..some code..
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        ButterKnife.bind(this, view)
        iApplySelectedCourseTypeFilter = targetFragment as ApplySelectedCourseTypeFilter
     }
..some code..
}
class MainActivity : DaggerAppCompatActivity() {
    @BindView(R.id.nav_view)
    lateinit var navView: BottomNavigationView

    override fun onCreate(savedInstanceState: Bundle?) {
        super<DaggerAppCompatActivity>.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        ButterKnife.bind(this)

        val navController = findNavController(R.id.nav_host_fragment)
        navView.setupWithNavController(navController)
        navView.menu.findItem(R.id.navigation_courses).setIcon(
            IconDrawable(this, MaterialCommunityIcons.mdi_account_box)
                .colorRes(R.color.colorPrimaryDark)
                .actionBarSize())

        navView.menu.findItem(R.id.navigation_login).setIcon(
            IconDrawable(this, MaterialCommunityIcons.mdi_login)
                .colorRes(R.color.colorPrimaryDark)
                .actionBarSize())

    }
}
我的
对话框片段
如下所示:

@CoursesFragmentScope
class CoursesFragment : DaggerFragment(),
    DefaultLifecycleObserver,
    CourseTypeListDialogFragment.ApplySelectedCourseTypeFilter {
    @OnClick(R.id.btnCourseType)
    fun btnCourseTypeClick() {

        val fm = activity!!.supportFragmentManager
        val courseTypeListDialogFragment =
            CourseTypeListDialogFragment()
        courseTypeListDialogFragment.isCancelable = false
        courseTypeListDialogFragment.setStyle(
            DialogFragment.STYLE_NO_TITLE,
            0
        )
        courseTypeListDialogFragment.setTargetFragment(this, 1)
        courseTypeListDialogFragment.show(fm, "")
    }
}
class CourseTypeListDialogFragment: DaggerAppCompatDialogFragment(), CourseTypeAdapter.CourseTypeListener {
    interface ApplySelectedCourseTypeFilter {
        fun applySelectedCourseType()
    }
..some code..
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        ButterKnife.bind(this, view)
        iApplySelectedCourseTypeFilter = targetFragment as ApplySelectedCourseTypeFilter
     }
..some code..
}
class MainActivity : DaggerAppCompatActivity() {
    @BindView(R.id.nav_view)
    lateinit var navView: BottomNavigationView

    override fun onCreate(savedInstanceState: Bundle?) {
        super<DaggerAppCompatActivity>.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        ButterKnife.bind(this)

        val navController = findNavController(R.id.nav_host_fragment)
        navView.setupWithNavController(navController)
        navView.menu.findItem(R.id.navigation_courses).setIcon(
            IconDrawable(this, MaterialCommunityIcons.mdi_account_box)
                .colorRes(R.color.colorPrimaryDark)
                .actionBarSize())

        navView.menu.findItem(R.id.navigation_login).setIcon(
            IconDrawable(this, MaterialCommunityIcons.mdi_login)
                .colorRes(R.color.colorPrimaryDark)
                .actionBarSize())

    }
}
但请在这行中告诉我以下
错误

courseTypeListDialogFragment.setTargetFragment(this, 1)
告诉我:

Fragment CourseTypeListDialogFragment{92f4a96 (cbe1689e-1367-4436-8de6-3797320e7d41) } declared target fragment CoursesFragment{422cc09 (9d16e30b-fd71-44a8-8c45-8a866b62c135) id=0x7f0800d5} that does not belong to this FragmentManager!
我能做什么

两个类都来自同一个包:

import dagger.android.support.DaggerAppCompatDialogFragment
import dagger.android.support.DaggerFragment
我删除了
courseTypeListDialogFragment.setTargetFragment(这个,1)
并打开了对话框,但没有在
对话框中使用我的
界面

我在
活动中使用from
片段
,如下所示:

@CoursesFragmentScope
class CoursesFragment : DaggerFragment(),
    DefaultLifecycleObserver,
    CourseTypeListDialogFragment.ApplySelectedCourseTypeFilter {
    @OnClick(R.id.btnCourseType)
    fun btnCourseTypeClick() {

        val fm = activity!!.supportFragmentManager
        val courseTypeListDialogFragment =
            CourseTypeListDialogFragment()
        courseTypeListDialogFragment.isCancelable = false
        courseTypeListDialogFragment.setStyle(
            DialogFragment.STYLE_NO_TITLE,
            0
        )
        courseTypeListDialogFragment.setTargetFragment(this, 1)
        courseTypeListDialogFragment.show(fm, "")
    }
}
class CourseTypeListDialogFragment: DaggerAppCompatDialogFragment(), CourseTypeAdapter.CourseTypeListener {
    interface ApplySelectedCourseTypeFilter {
        fun applySelectedCourseType()
    }
..some code..
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        ButterKnife.bind(this, view)
        iApplySelectedCourseTypeFilter = targetFragment as ApplySelectedCourseTypeFilter
     }
..some code..
}
class MainActivity : DaggerAppCompatActivity() {
    @BindView(R.id.nav_view)
    lateinit var navView: BottomNavigationView

    override fun onCreate(savedInstanceState: Bundle?) {
        super<DaggerAppCompatActivity>.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        ButterKnife.bind(this)

        val navController = findNavController(R.id.nav_host_fragment)
        navView.setupWithNavController(navController)
        navView.menu.findItem(R.id.navigation_courses).setIcon(
            IconDrawable(this, MaterialCommunityIcons.mdi_account_box)
                .colorRes(R.color.colorPrimaryDark)
                .actionBarSize())

        navView.menu.findItem(R.id.navigation_login).setIcon(
            IconDrawable(this, MaterialCommunityIcons.mdi_login)
                .colorRes(R.color.colorPrimaryDark)
                .actionBarSize())

    }
}
class MainActivity:DaggerAppCompative(){
@BindView(R.id.nav_视图)
lateinit变量navView:BottomNavigationView
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
黄油刀,绑(这个)
val navController=findNavController(R.id.nav_主机_片段)
navView.setupWithNavController(navController)
navView.menu.findItem(R.id.navigation\U课程).设置图标(
ICondravable(此处为MaterialCommunicationIcons.mdi\u账户框)
.colorRes(R.color.colorPrimaryDark)
.actionBarSize())
navView.menu.findItem(R.id.navigation\u login).setIcon(
ICondravable(这是MaterialCommunicationIcons.mdi_登录名)
.colorRes(R.color.colorPrimaryDark)
.actionBarSize())
}
}
更改此行

val fm = activity!!.supportFragmentManager

阅读以下博客

@Fahad Alotaibi。我找不到任何childFragmentManager。您是如何添加的。CoursesFragment您是否使用了supportFragmentManager?@Fahad Alotaibi。更新了我的问题。此问题与碎片管理器有关。请参阅更新的答案