У меня есть три вида и один вид деятельности. MainActivity - MainController - PushedController - NotificationOpenController.Как справиться с намерениями с Kotlin и проводником
MainController содержит кнопку, при нажатии на нее наносится черный ящик, и устройство получает уведомление в лотке уведомлений.
Когда уведомление щелкнул, я хочу, чтобы поведение, как будто
router.pushController(RouterTransaction.with(NotificationOpenController(bundle))
.pushChangeHandler(VerticalChangeHandler())
.popChangeHandler(VerticalChangeHandler()))
только что произошло.
связанные Любые Котлины советов или изменения оценены, как я делаю это, чтобы выучить язык
Я не был уверен, как добиться этого в надлежащем порядке через намерения, возможно, трансляция? но после нескольких проб и ошибок мой код теперь выглядит следующим образом:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
App.graph.inject(this)
setContentView(R.layout.activity_main_kotlin)
Log.d(TAG,"${FirebaseInstanceId.getInstance().getToken()}")
router = Conductor.attachRouter(this, controller_container, savedInstanceState)
val startingIntent : Intent? = intent
if(startingIntent?.extras != null){
transitionToNotificationOpenController(startingIntent?.extras)
}
else{
if (!router.hasRootController()) {
router.setRoot(RouterTransaction.with(MainController()));
}
}
}
override fun onBackPressed() {
if (!router.handleBack()) {
super.onBackPressed()
}
}
fun transitionToNotificationOpenController(bundl: Bundle?){
router.pushController(RouterTransaction.with(NotificationOpenController(bundl))
.pushChangeHandler(VerticalChangeHandler())
.popChangeHandler(VerticalChangeHandler()))
}
Уведомление Намерение построен как этот
val builder = NotificationCompat.Builder(this).setContentTitle("Title").setContentText("Text")
val notificationIntent = Intent(this, MainActivity::class.java)
notificationIntent.putExtra("message",messageBody)
val contentIntent = PendingIntent.getActivity(this, 0, notificationIntent,
PendingIntent.FLAG_UPDATE_CURRENT)
...
manager.notify(1,builder.build())
Однако, используя этот подход, анимация получает все неправильно, и пользователь может только см. «типичное» всплывающее представление после загрузки какого-либо или запуска нового действия , так как при нажатии уведомления появляется уведомление о деятельности, а затем действие «Пауза» -> «Операция возобновления» после нажатия на подставку.