I've got this code for debugging purposes - trying...
# getting-started
r
I've got this code for debugging purposes - trying to figure out where the state is set. Maybe I should take a look at some state machine libraries at some point.
Copy code
kotlin
    var currentState: CurrentState = CurrentState.MainPage
        set(value) {
            val stackTraceElement = Throwable().stackTrace
            Log.d(TAG, "Setting currentState to $currentState from ${stackTraceElement[2].fileName}:${stackTraceElement[2].lineNumber} - ${stackTraceElement[2].methodName}")
            field = value
        }
I'm getting one call which sets it to state A, but when I retrieve the value in another function later, it tells me it's in state B, without a log line showing it ever set it to state B. What?
r
You're logging
$currentState
which is the existing value before setting it to the new value, so you should probably be logging
$value
instead
r
🤦
Thanks, that was it.
👍 1
k
An alternative way is to use `Delegates.observable`:
Copy code
var currentState: CurrentState by Delegates.observable(CurrentState.MainPage) { _, _, new ->
            val stackTraceElement = (Throwable().stackTrace)[2]
            Log.d(TAG, "Setting currentState to $new from ${stackTraceElement.fileName}:${stackTraceElement.lineNumber} - ${stackTraceElement.methodName}")
        }
r
Neato, thanks!