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.