A sprite manager is not really good. Sprites are light weight objects and should be part of the object that uses it. I'd suggest to make the sprite a member variable of the TextBox.
For the current state, you always need to make sure that the object in the array exists. Instead of blindly accessing it "because I know it exists!!!1".
That's also the reason why it crashes. No sprites exist in that array and you try to access the element with index 0, which doesn't exist -> crash.
The reason why it doesn't exist is, because you've declared an empty default constructor for SpriteManager, which doesn't call the init part, thus never creating the sprites.
Remove the default constructor and init the SpriteManager via the other constructor by passing a TextureManager in ChatObject's initialization list.