Je suis assez nouveau pour Android, et j'essaie de l'apprendre avec kotlin. Dans ce codeImpossible d'appeler StartActivityForResult dans Anko
mHelp.setOnClickListener {context.startActivity<HelpActivity>()}
mSettings.setOnClickListener {
context.startActivityForResult<LocalSettingsActivity>(
LOCAL_SETTINGS_REQUEST,
"coords" to this.board.mCoords,
"drag" to this.mWhiteStones[0].drag)
}
l'appel à startActivity
fonctionne très bien, mais je reçois une erreur de syntaxe sur l'appel à startActivityForResult
. L'erreur indique qu'il s'agit d'une non-concordance de type de récepteur, et que le récepteur doit être un Activity
ou un Fragment
. D'autre part, le récepteur pour StartActivity
peut être un Fragment
, un Context
ou un AnkoContext<*>
(quel qu'il soit).
Bien sûr, je peux faire ce travail (je pense) en construisant le Intent
et ne pas utiliser anko.StartActivityForResult
, mais je voudrais comprendre ce qui se passe.
Il m'est venu à l'esprit que j'ai peut-être mal organisé mon code. Le code ci-dessus est dans un ViewGroup
personnalisé qui a le ImageButtons
mHelp et mSettings comme enfants, et context
est le Context
passé au constructeur principal ViewGroup
. Devrais-je définir le onClickListeners
dans le Activity
qui gère le ViewGroup
personnalisé? Si non, comment j'appellerais StartActivityForResult
?
Merci pour cette réponse éclairante. Je vais essayer la solution rapide-et-sale (lancer à l'activité) pour l'instant, parce que je dois obtenir une application fonctionnante pour montrer des personnes. Dès que c'est la porte, je vais essayer de tout refaire intelligemment. – saulspatz