ah... found the problem:
Seems like the timing of the view actually being presented on-screen is different on Android.
As a workaround, I keep a variable in my layer class to keep track of whether a button has been pressed and which one it was. When the button is pressed this variable is set. At the same time, a counter variable is also set to keep track of how many ticks have occurred since the button was pressed. Of course, the sprite color is also changed.
In the update function, these two variables are checked to see if a button was pressed, and if more than one tick has passed since the press. If so the scene is replaced.