kodein, inyecta datos a la class simple
Soy nuevo en el desarrollo de kotlin y kodein. Quiero inyectar datos a una class simple que no amplía nada.
Tengo mi MainActivity
que extiende KodeinAppCompatActivity()
, mi fragment que extiende KodeinSupportFragment()
llama a una function de mi class simple CallType
. Pero esta function debe cambiar un boolean de otra class simple ConnectivitySate
. No quiero usar valor estático.
- Los parameters generics Cualquiera de kotlin se convierte en comodines (?)
- Problemas con HasSupportFragmentInjector en kotlin - DispatchingAndroidInjector es nulo
- Kotlin: ¿Cómo ejecutar methods de service en el context de una class de transacción?
- El plugin de comstackdor abierto de Kotlin no funciona
- Hacer la transición de elementos compartidos entre fragment y dialog
A continuación, mi código:
class App : Application(), KodeinAware { override val kodein by Kodein.lazy { import(autoAndroidModule(this@App)) bind<CallType>() with instance(CallType()) bind<ConnectivityState>() with instance(ConnectivityState()) bind<ContactData>() with instance(ContactData()) } override fun onCreate() { super.onCreate() registerActivityLifecycleCallbacks(androidActivityScope.lifecycleManager) }
Actividad principal :
class MainActivity : KodeinAppCompatActivity() {
Mi fragment:
class JournalFragment : KodeinSupportFragment(){ private val callType: CallType by instance() @SuppressLint("MissingSuperCall") override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) initializeInjector() } override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?,savedInstanceState: Bundle?): View? { // !! CALL MY FUNCTION !! callType.call(callType.callNumber) } .... @SuppressLint("MissingSuperCall") override fun onDestroy() { super.onDestroy() destroyInjector() }
Mi class simple:
class CallType { fun call(number: String) { // !! I want to change gsmState value from ConnectivityState class connectivityState.gsmState = true }
Mi class ConnectivityState:
class ConnectivityState { var gsmState = false }
Es un ejemplo entre muchos otros, porque en muchas situaciones, estoy bloqueado así. He intentado muchas cosas pero siempre tengo como error: value not injected
Muchas gracias por su respuesta..
- El complemento kapt no funciona con gradle-script-kotlin
- ¿Cómo usar los wrappers de llamada para Intento Anko?
- Suprimir "Usar syntax de acceso a la propiedad" para el método o class
- Agregar una configuration 'proporcionada' a una biblioteca de kotlin / java usando gradle
- Tiempo de ejecución obsoleto de Kotlin
- Cómo get una list de todas las classs en un file .kt
- Java genérico para Kotlin genérico. Retorno genérico del método
- El filtrado de la entidad Hibernate con @Filter no filtra
Cuando llama a super.onCreate()
, llama onCreateView
, por lo que se llama a la línea callType.call(callType.callNumber)
antes de initializeInjector()
.
Tenga en count que siempre debe llamar a initializeInjector()
antes de llamar a super.onCreate()
:
override fun onCreate(savedInstanceState: Bundle?) { initializeInjector() super.onCreate(savedInstanceState) }
- el timer se bloquea con KotlinNullPointerException dentro del fragment
- Android RecyclerView Manejo de datos usando Kotlin: índice de cambio de filas después de la modificación