Ich bin ziemlich neu in Android, und ich versuche, es mit Kotlin zu lernen. In diesem CodeKann StartActivityForResult in Anko nicht anrufen
mHelp.setOnClickListener {context.startActivity<HelpActivity>()}
mSettings.setOnClickListener {
context.startActivityForResult<LocalSettingsActivity>(
LOCAL_SETTINGS_REQUEST,
"coords" to this.board.mCoords,
"drag" to this.mWhiteStones[0].drag)
}
der Aufruf von startActivity
funktioniert gut, aber ich habe einen Syntaxfehler auf dem Aufruf von startActivityForResult
. Der Fehler besagt, dass es sich um einen Fehlertyp des Empfängers handelt und dass der Empfänger ein Activity
oder ein Fragment
sein sollte. Andererseits kann der Empfänger für StartActivity
ein Fragment
, ein Context
oder ein AnkoContext<*>
(was auch immer das ist) sein.
Natürlich kann ich diese Arbeit machen (denke ich), indem ich Intent
baue und nicht anko.StartActivityForResult
benutze, aber ich würde verstehen, was vor sich geht.
Es ist mir eingefallen, dass ich vielleicht meinen Code falsch geordnet habe. Der obige Code ist in einer benutzerdefinierten ViewGroup
, die die ImageButtons
mHelp und mSettings als Kinder hat, und context
ist die Context
an den primären Konstruktor ViewGroup
übergeben. Sollte ich vielleicht die onClickListeners
in der Activity
setzen, die die benutzerdefinierte ViewGroup
verwaltet? Wenn nicht, wie würde ich StartActivityForResult
anrufen?
Vielen Dank für diese aufschlussreiche Antwort. Ich werde die schnell-und-schmutzige Lösung (Casting zu Activity) vorerst versuchen, da ich eine funktionierende App brauche, um Leute zu zeigen. Sobald das draußen ist, werde ich alles intelligent umgestalten. – saulspatz