Я пытаюсь отклонить пользовательский диалог из другого действия (MainActivity), которое я расширил до класса BaseActivity.
Я попытался вызвать метод dialog.dismiss () в функции checkConnectivity () как показано ниже:
fun checkConnectivity() {
val cm = getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val activeNetwork = cm.activeNetworkInfo
val isConnected = activeNetwork != null && activeNetwork.isConnectedOrConnecting
val internetErrorImg = resources.getDrawable(R.drawable.internet) as Drawable
if (!isConnected) {
alert()
} else {
Toast.makeText(this, "Connected.", Toast.LENGTH_LONG).show()
dialog.dismiss()
}
}
Но возвращается ошибка, что «диалог свойств lateinit не был инициализирован».
Поэтому я попытался передать логическое выражение, как показано ниже, если оно истинно должен показывать диалог, но если false, он должен закрывать диалог.
fun alert(image: Drawable, message: String, on: Boolean) {
val builder = AlertDialog.Builder(this)
val view = layoutInflater.inflate(R.layout.alert_layout, null)
builder.setView(view)
builder.setCancelable(false)
view.img.setImageDrawable(image)
view.mssg.text = message
dialog = builder.create()
dialog.window?.requestFeature(Window.FEATURE_NO_TITLE)
dialog.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
if (on) {
dialog.show()
} else {
dialog.dismiss()
}
}
И я вызвал функцию в функции checkConnectivity () следующим образом:
if (!isConnected) {
alert(internetErrorImg,"Error connecting to the internet", true)
} else {
Toast.makeText(this, "Connected.", Toast.LENGTH_LONG).show()
alert(internetErrorImg, "null", false)
}
Но это не так не работает и не показывает никаких ошибок. Как я могу решить эту проблему?
Это полный код для BaseActivity
open class BaseActivity : AppCompatActivity() {
var TAG = this.toString()
lateinit var dialog: AlertDialog
fun checkConnectivity() {
val cm = getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val activeNetwork = cm.activeNetworkInfo
val isConnected = activeNetwork != null && activeNetwork.isConnectedOrConnecting
val internetErrorImg = resources.getDrawable(R.drawable.internet) as Drawable
if (!isConnected) {
alert(
internetErrorImg,
"Error connecting to the internet, check connection and try again.", true
)
} else {
Toast.makeText(this, "Connected.", Toast.LENGTH_LONG).show()
alert(internetErrorImg, "null", false)
}
}
fun alert(image: Drawable, message: String, on: Boolean) {
val builder = AlertDialog.Builder(this)
val view = layoutInflater.inflate(R.layout.alert_layout, null)
builder.setView(view)
builder.setCancelable(false)
view.img.setImageDrawable(image)
view.mssg.text = message
dialog = builder.create()
dialog.window?.requestFeature(Window.FEATURE_NO_TITLE)
dialog.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
if (on) {
dialog.show()
} else {
dialog.dismiss()
}
}
Это моя основная деятельность, в которой я расширяюсь до базового класса активности
class MainActivity : BaseActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
checkConnectivity()
}
}