首页 > 解决方案 > 从片段Dagger 2 Kotlin android替换片段

问题描述

我遵循了一些教程并获得了一些关于 dagger 2 和实现的知识。我按照教程开始练习代码。我的查询是我需要从一个片段中更改片段。我知道实际的方法,但是我需要知道匕首 2 中针对这种情况的标准方法。我有两个片段 HomeFragment,PracticeFragment 我需要从 HomeFragment 调用练习片段我将在下面粘贴我的代码

主要活动

class MainActivity : AppCompatActivity(), MainContract.View {


    @Inject lateinit var presenter: MainContract.Presenter

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        injectDependency()
        presenter.attach(this)
    }

    private fun injectDependency() {
     var activityComponent = DaggerActivityComponent.builder()
         .activityModule(ActivityModule(this))
         .build()
        activityComponent.inject(this)
    }

    override fun showHomeFragment() {
            supportFragmentManager.beginTransaction()
                .addToBackStack(null)
                .replace(R.id.frame,HomeFragment().newInstance(),HomeFragment.TAG)
                .commit()
    }
    override fun showPracticeFragment() {

        supportFragmentManager.beginTransaction()
            .addToBackStack(null)
            .replace(R.id.frame,PracticeFragment().newInstance(),PracticeFragment.TAG)
            .commit()

    }

}

主讲者

class MainPresenter : MainContract.Presenter {


    private lateinit var view: MainContract.View
    private val subscriptions = CompositeDisposable()

    override fun onDrawerOptionsClick() {

    }

    override fun subscribe() {

    }

    override fun unsubscrbe() {
        subscriptions.clear()
    }

    override fun attach(view: MainContract.View) {
        this.view = view
        view.showHomeFragment()
    }

}

首页片段

class HomeFragment : Fragment(),HomeContract.view  {


    @Inject  lateinit var presenter : HomeContract.Presenter

    private lateinit var rootView: View

    fun newInstance(): HomeFragment{
        return HomeFragment()
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        injectDependency()
    }

    private fun injectDependency() {
        val fragmentComponent = DaggerFragmentComponent.builder()
            .fragmentmodule(Fragmentmodule()).build()
        fragmentComponent.inject(this)

    }

    override fun onCreateView (inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        rootView =inflater.inflate(R.layout.fragment_home,container,false)

        return rootView
    }

    override fun onViewCreated (view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        presenter.attach(this)
         presenter.subscribe()
   }

    override fun showProgress(boolean: Boolean) {
    }

    override fun loadMessageSuccess(message: String) {

    }
    companion object {
        val TAG: String = "HomeFragment"
    }
}

主页演示者

class HomePresenter : HomeContract.Presenter {
    lateinit var view: HomeContract.view
    override fun loadMessage() {

    }

    override fun subscribe() {

    }

    override fun unsubscrbe() {

    }

    override fun attach(view: HomeContract.view) {
        this.view = view
    }
}

而且我对 MVP 方法也很陌生。请检查上面的代码。提前致谢

标签: androidandroid-fragmentsdagger-2dagger

解决方案


推荐阅读