To specialize or to be a generalist is a choice, or balance, that all programmers consider at some point in their career. However, it seems like the inexorable march of technology will make obsolete any language or platform that you're familiar with today, so the question is not whether or not to pick a language or platform and stick with it, but rather, when to start learning a new one.
This doesn't have to be a question of ditching your language, platform, or framework of choice. The better way to think about it is learning to be nimble. Exploring and playing with other technology. At some point you'll cease to be an X programmer, where X is a language, platform, or framework, and you'll become a programmer.
In part, that's the idea behind The Pragmatic Programmer's Seven in Seven Series: group and categorize technologies, study them in short, intense bursts, and then you will not only have become somewhat familiar with a technology, but also with groups of technologies. You'll also be able to apply what you've learned to your more familiar technology as well. Maybe by learning to approach problems from a different angle, or by understanding something you previously didn't think to dive into.
This is the main reason why I wanted to write Seven Mobile Apps in Seven Weeks, recently released in that PragProg series. What works well for exploring and learning new languages or databases, I believe works well for mobile frameworks and platforms.
I feel like the mobile and web development communities are prone to sticking religiously by a specific platform or framework. The programming community in general has always loved “holy wars”: Windows vs Mac vs Linux, Vim vs Emacs, various incorrect indentation styles vs the “One True Brace Style”, that kind of thing. It's part of our culture and lots of fun, too. However, you should keep in mind what these time-honored conflicts are worth, and don't let any such prejudices, or simply comfort, get in the way of learning and staying nimble.
More specifically, the mobile space is hotly contested right now, and being proficient on more than one platform is a very valuable thing. Most of the problems you'll need to solve as a mobile developer are of the same kind. Loading data from an API, translating that to a local data structure, and displaying it on the screen comprises the majority of the work a mobile developer does. It's not hard to learn to do this on more than one platform, and ideally for the mobile web as well.
However you choose to do so, keep growing as a programmer. In your technology of choice, of course, but also by exploring, playing, and comparing. In my experience, most programmers would be programming whether or not someone payed them to do it. That being the case, continually pressing outside of your comfort zone not only keeps your employment opportunities high, but it keeps you engaged and enriched. As a developer on any technology, keep learning, stay relevant, and stay nimble.