У меня есть приложение с SplashscreenActivity, которое запускает приложение. Таким образом, SplashscreenActivity является MainActivity и запускает HomeActivity. Когда я нажимаю обратно в HomeActivity, я хочу открыть диалоговое окно с вопросом, хотите ли вы выйти из приложения. Если вы нажмете да, приложение должно быть закрыто. Я понял это с помощью следующего кода:
MainActivity:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
Handler().postDelayed({
val intent = Intent(this, HomeActivity::class.java)
startActivity(intent)
}, 1500)
}
}
В HomeActivity:
override fun onBackPressed() {
val dialog = BackPressedFragment()
dialog.show(supportFragmentManager, "BackPressedDialog")
}
override fun leave() {
moveTaskToBack(true)
finish()
}
Диалог:
class BackPressedFragment: DialogFragment() {
private lateinit var listener: ILeave
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val builder = AlertDialog.Builder(context)
builder.setMessage(getString(R.string.leave))
.setNegativeButton(android.R.string.cancel) {_,_->
}
.setPositiveButton(android.R.string.yes) {_,_->
listener.leave()
}
return builder.create()
}
interface ILeave {
fun leave()
}
override fun onAttach(context: Context) {
super.onAttach(context)
try {
listener = context as ILeave
} catch (e: ClassCastException) {
e.printStackTrace()
}
}
}
Это работает, но есть одна проблема. При повторном входе в приложение MainActivity не запускается HomeActivity. Застряв в MainActivity, я должен снова уйти и снять квартиру, после чего запускается HomeActivity.