Я новичок в использовании шаблона MVVM, и я использовал кодеин в своем приложении. Однако мне нужно отобразить диалоговое окно с предупреждением NO INTE RNET CONNECTION.
Мне удалось реализовать перехватчик сетевого подключения, но я не знаю, как отобразить диалоговое окно с предупреждением в моем классе без активности / фрагмента. Пожалуйста, помогите мне. Буду очень признателен за вашу помощь
Это мой класс приложения
class MVVMApplication : Application(), KodeinAware {
var mAppConfig:MVVMApplication? = null
@RequiresApi(Build.VERSION_CODES.O)
override val kodein = Kodein.lazy {
import(androidXModule(this@MVVMApplication))
bind() from singleton {
NetworkConnectionInterceptor(
instance()
)
}
bind() from singleton { MyApi(instance()) }
bind() from singleton {
AppDatabase(
instance()
)
}
bind() from singleton { LoginRepository(instance(), instance()) }
bind() from singleton { CommentsRepository(instance(), instance()) }
bind() from singleton { JobsRepository(instance(), instance(), instance()) }
bind() from singleton { FeedsRepository(instance(), instance(), instance()) }
bind() from singleton { BidsRepository(instance(), instance(), instance()) }
bind() from singleton { SearchRepository(instance(), instance()) }
bind() from singleton { NotificationsRepository(instance(), instance(), instance()) }
bind() from singleton { LoginViewModelFactory(instance()) }
bind() from provider { CompaniesRepository(instance(), instance()) }
bind() from provider { JobsViewModelFactory(instance(), instance()) }
bind() from provider { BidsViewModelFactory(instance(), instance()) }
bind() from provider { FeedsViewModelFactory(instance(), instance()) }
bind() from provider { CommentsViewModelFactory(instance(), instance()) }
bind() from provider { CompaniesViewModelFactory(instance(), instance()) }
bind() from provider { NotificationsViewModelFactory(instance(), instance()) }
bind() from provider { SearchViewModelFactory(instance(), instance()) }
}
/*override fun onCreate()
{
super.onCreate()
mAppConfig=this
}
fun getInstance(): MVVMApplication? {
return mAppConfig
}
companion object {
const val DEBUG = true
var instance: MVVMApplication? = null
private set
}*/
}
Это мой класс сети, где я пытаюсь отобразить диалоговое окно с предупреждением при отсутствии соединения. Все хорошо, но диалоговое окно с предупреждением выдает ошибку
class NetworkConnectionInterceptor(
var context: Context
) : Interceptor {
val applicationContext = context.applicationContext
@RequiresApi(Build.VERSION_CODES.M)
override fun intercept(chain: Interceptor.Chain): Response {
if (!isInternetAvailable())
{
noInternetDialogue()
throw NoInternetException("Make sure you have an active data connection")
}
return chain.proceed(chain.request())
}
@RequiresApi(Build.VERSION_CODES.M)
private fun isInternetAvailable(): Boolean {
var result = false
val connectivityManager =
applicationContext.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager?
connectivityManager?.let {
it.getNetworkCapabilities(connectivityManager.activeNetwork)?.apply {
result = when {
hasTransport(NetworkCapabilities.TRANSPORT_WIFI) -> true
hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) -> true
else -> false
}
}
}
return result
}
fun noInternetDialogue() {
Handler(Looper.getMainLooper()).post(Runnable {
var alertDialog = AlertDialog.Builder(context);
alertDialog.setTitle("No Active Internet!!")
//alertDialog.setMessage("Enter the reason the rejection");
.setNegativeButton("Cancel") { dialog, id -> dialog.dismiss() }
val dialog: AlertDialog = alertDialog.create()
dialog.window?.setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT)
dialog?.show()
//Toast.makeText(context,"no internet",Toast.LENGTH_LONG).show()
})
}
}
, пожалуйста, помогите мне. Ваша помощь будет высоко ценится. Заранее спасибо