а зачем танцы с фабрикой?
Нуллабельные, потому что там по факту юнион, это не касается вопроса передачи данных.
Лисенер — очевидно, никак не передать. Для этого есть родительская активити и start for result
Обычно делают, но зачем это уродство? Танцы с компанионом, возможность создать экземпляр без параметров и т. п.