【问题标题】:How to run code just one time in Fragment on Android如何在 Android 上的 Fragment 中只运行一次代码
【发布时间】:2022-07-20 22:12:36
【问题描述】:

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

我该如何解决?

【问题讨论】:

  • 使用多导航图...检查 git 实验室中的高级导航
  • @GobuCSG,你能把这个链接发给我吗?或源代码链接。谢谢

标签: android android-fragments


【解决方案1】:

您应该将您的 presenter.callApi() 替换为在您的 Presenter(ViewModel) 中触发的有趣的 onFragmentCreated

您只需要一个布尔变量来第一次检查它是否会导致您的 Presenter(ViewModel) 附加到活动,而不是片段,以便它可以存储您的状态。

Presenter {
    fun onFragmentCreated() {
        if(firstTime) callApi()
        

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-01
    • 1970-01-01
    • 2019-10-31
    相关资源
    最近更新 更多