
There are lots of cross-platform solutions
Most of the open source toolkits are cross platform as that is one of the major design criteria for open source systems. Proprietary toolkits are (generally) designed to lock you into a particular platform such as .NET for Windows or Objective-C/Cocoa for Apple OS/X or iOS. It could be said that Android's UI code (authored in Java) and the Dalvik run-time engine lock you into Android but as both the Android operating system and Java/Dalvik code are open source this is perhaps less of a problem.
IMHO, the most sensible cross-platform toolkit for applications is HTML5 which is what is being adopted by the FirefoxOS as the development language and by PhoneGap and Mozilla WebRT
https://developer.mozilla.org/en-US/docs/Apps/FAQs/About_apps
Write applications which are not just cross-platform but completely independent of where they are hosted (either on a server through a browser or locally on a client). These are the sorts of technologies which will ulimately kill off client locked technologies like .NET, Objective-C/Cocoa and yes even Android/Java.