I have this function and I'd like to call it within a fragment.
fun showProgressBar(context: Context) : ProgressDialog {
val progressDialog = ProgressDialog((context))
progressDialog.isIndeterminate = true
progressDialog.setMessage(context.getString(R.string.progress_loading))
progressDialog.show()
return progressDialog
}
That's how I call in an activity: val mProgressDialog = Utils.showProgressBar(this@MainActivity)
Calling it in a fragment val mProgressDialog = Utils.showProgressBar(this@HomeFragment)
throws this error
CodePudding user response:
The Fragment
class has many methods. One of these is requireContext()
, which will attempt to give you a Context
to use. This will only work while the fragment is attached to an activity.
CodePudding user response:
A Fragment has methods getActivity()
and getContext()
(or just activity
and context
in Kotlin). To get a context from a Fragment, you just need to do
Utils.showProgressBar(activity)
// or
Utils.showProgressBar(context)
Note that activity
or context
can be null depending on when in the lifecycle you call it. To require a non-null context/activity you can use
val ctx = requireContext()
// or
val act = requireActivity()
which will either return a non-null activity (context) or throw and IllegalStateException