Find the good bits
First, skim over the strengths of the language/framework. Don't try to learn it all but just know what it claims to do well. That way, when you come up against a situation where you think it could be useful, you can go back and learn it in more depth.
Do something significant, interesting and REAL
Next, decide on a medium sized project you want to complete using your new language/framework and don't limit yourself to what you already know about it. The project needs to be something interesting to you and preferibly something you would actually use. For example, to learn the Android SDK I made an app that turns an Android phone into a remote for your PC.
Do it piecemeal and include learning with each piece
Try an agile style of development. That is, just implement one feature at a time and don't concern yourself with what you will need later on. Refactor as necessary. Each time you begin a new feature, try to find better ways to accomplish the task by learning new aspects of the language/framework.
You'll often find yourself thinking things like:
- In language/framework x I could have done y, what does this new language/framework offer?
- Hey, I read briefly about feature x, maybe that could be applied here.
Now, every time you learn a new aspect, you are also bringing yourself closer to accomplishing your goal of completing the project. Also, since you are doing it in an agile way, you are rewarded often. That's what keeps my motivation.