在我的应用程序中,我有一些fragments
,为了显示这些片段,我想使用NavigationComponent
我有一个问题。当单击BottomNavigationItems
并更改fragments
时,再次运行片段代码
我只想第一次运行代码
我的代码(针对其中一个片段(:
@AndroidEntryPoint
class HomeNewFragment : Fragment(), HomeContracts.View {
//Binding
private lateinit var binding: FragmentHomeNewBinding
@Inject
lateinit var presenter: HomePresenter
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
binding = FragmentHomeNewBinding.inflate(layoutInflater)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
//InitViews
binding.apply {
//Call apis
presenter.callApi()
}
}
}
例如,当点击项目时,每次调用此代码:presenter.callApi()
或者,当转到DetailFragment并单击返回时,再次调用presenter.callApi()
我该怎么修?
您应该将您的presenter.callApi()
替换为演示者(ViewModel(中触发的有趣的onFragmentCreated
。
您所需要的只是一个布尔var来检查它第一次是否导致Presenter(ViewModel(与活动匹配,而不是片段,以便它可以存储您的状态。
Presenter {
fun onFragmentCreated() {
if(firstTime) callApi()