Заменить фрагмент из фрагмента Dagger 2 Kotlin android - PullRequest
1 голос
/ 25 марта 2019

Я следовал некоторым учебникам и немного узнал о кинжале 2 и его реализации. Я последовал этому уроку и начал практиковать код. Мой запрос мне нужно изменить фрагмент из одного фрагмента. Я знаю реальный метод, но мне нужно знать стандартный путь в кинжале 2 для этого сценария. У меня есть два фрагмента HomeFragment, PracticeFragment Мне нужно позвонить фрагмент практики из HomeFragment Я вставлю свой код ниже здесь

MainActivity

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()

    }

}

MainPresenter

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()
    }

}

HomeFragment

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"
    }
}

HomePresenter

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. Пожалуйста, проверьте приведенный выше код. Заранее спасибо

...