android - 从片段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 方法也很陌生。请检查上面的代码。提前致谢
解决方案
推荐阅读
- java - 所有本地类和所有匿名类也是内部类吗?
- flutter - _CastError(用于空值的空检查运算符)在 Flutter 中验证电子邮件和密码时
- sql - 我想在 sequelize-typescript 模型中实现 WITH(NOLOCK)
- bash - 如何从 bash 脚本中的下载字符串中获取 jdk 版本
- saml - 如何使用 RelayState 请求参数作为声明规则参数
- visual-studio-code - vs代码终端中的空白
- compiler-errors - pyinstaller - 关于 Scrape 项目的问题
- laravel - How can I edit multi select box in laravel?
- php - 从两个不同的表中减去 sql 值有不同的 ID
- python - 仅从 bin 中提取值