No se puede llamar a StartActivityForResult en Anko

Soy bastante nuevo en Android, y estoy tratando de aprenderlo con kotlin. En este código

mHelp.setOnClickListener {context.startActivity<HelpActivity>()} mSettings.setOnClickListener { context.startActivityForResult<LocalSettingsActivity>( LOCAL_SETTINGS_REQUEST, "coords" to this.board.mCoords, "drag" to this.mWhiteStones[0].drag ) } 

la llamada a startActivity funciona bien, pero obtengo un error de syntax en la llamada a startActivityForResult . El error dice que es una discrepancia del tipo de receptor, y que el receptor debe ser una Activity o un Fragment . Por otro lado, el receptor para StartActivity puede ser un Fragment , un Context o un AnkoContext<*> (cualquiera que sea).

Por supuesto, puedo hacer que esto funcione (creo) construyendo Intent y no usando anko.StartActivityForResult , pero entendería lo que está pasando.

Se me ha ocurrido que tal vez tengo mi código organizado mal. El código anterior está en un grupo de vista personalizado que tiene ImageButtons mHelp y mSettings como secundarios, y el context es el Context pasado al constructor principal del grupo de ViewGroup . ¿Debo quizás configurar onClickListeners en la Activity que gestiona el ViewGroup personalizado? Si no, ¿cómo llamaría a StartActivityForResult ?

Solutions Collecting From Web of "No se puede llamar a StartActivityForResult en Anko"

startActivityForResult solo se puede startActivityForResult en una Activity porque solo una Activity puede recibir un resultado de otra Activity finalización. Hay algunas soluciones, probablemente la más fácil sería cambiar su ViewGroup personalizado para que acepte una Activity lugar de solo un Context , o, si sabe que solo usará ese ViewGroup de ViewGroup de una Activity , simplemente ViewGroup el Context a una Activity .

Sin embargo, tienes razón cuando dices que tu código probablemente podría organizarse mejor para eludir por completo este problema. Solo después de la separación de las preocupaciones, su ViewGroup no debería ser responsable de las acciones de navigation en su aplicación. El ViewGroup podría permitir, por ejemplo, que los oyentes se registren para el evento que en este momento desencadena la acción de navigation. De esta forma, la Activity puede registrarse para ese evento, hacer la navigation en sí y manejar el resultado fuera del grupo de ViewGroup .