Inner classes are quite often very useful. Anonymous inner classes are great for when you need a class only at one specific point in your code. Event listeners are quite often programmed as anonymous inner classes.
The only problem about anonymous inner classes is that bit Rob mentioned about "one specific point". It can be difficult to be sure you won't need something similar elsewhere. If I am sure there is only one place I shall use it, I am happy to use an anonymous inner class.