lateinit property sharedpreference has not been initalized

Viewed 33

Hi I am trying to link my sharedpreference manager via dagger and inject it into my fragment but It keeps saying it has not been initalized yet how would I go around to fix this? Code snippet:

lass HomeFragment : Fragment() {

    private lateinit var binding: FragmentHomeBinding
    private lateinit var viewModel: HomeFragmentVM

    @Inject
    lateinit var spManager: SPManager


    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        binding = FragmentHomeBinding.inflate(inflater, container, false)
        return binding.root
    }
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        val repository = Repository()

        val viewModelFactory = HomeFragmentVMFactory(repository)
        viewModel = ViewModelProvider(this, viewModelFactory)[HomeFragmentVM::class.java]
        getUserList()
    }
    private fun getUserList() {
        var retrofit = RetrofitClient.getInstance()
        var apiInterface = retrofit.create(SimpleApi::class.java)
        lifecycleScope.launchWhenCreated {
            try {

                val response = apiInterface.getPost()
                if (response.isSuccessful) {
                    val products = response.body()!!.data.toString()
                    if (response.body()?.data?.size!! <= 0) {
                    } else {
                        if (spManager.getProductID().isEmpty())
                        {
                            spManager.saveProductID(response.body()!!.productid.toLong())
                        }

                        txtData.text = response.body()?.data.toString()
                    }
                } else {
                }
            }catch (Ex: Exception){
                Log.e("Error",Ex.localizedMessage)
            }
        }

    }

}

The error does not cause a crash to the app but it comes up in my logs as lateinit property spManager has not been initalized.

0 Answers
Related