如何在Android上的Fragment中只运行一次代码



在我的应用程序中,我有一些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()

最新更新