2011-04-28 3 views
0

Mon projet actuel est créé pour API niveau 4 et j'utilise l'implémentation personnalisée de l'interface Window.Callback là. Lorsque j'exécute le projet sur des niveaux d'API supérieurs, j'obtiens l'erreur suivante: java.lang.AbstractMethodError: méthode abstraite non implémentée. En effet, deux méthodes supplémentaires ont été ajoutées à cette interface depuis le niveau 5 de l'API. Ainsi, toute interface Android peut être modifiée dans les prochains niveaux d'API et toute application utilisant une interface modifiée tombera en panne !? Comment résoudre ce problème? J'ai deux solutions, ce qui est mieux ?:problème de compatibilité Android

  1. Utiliser le proxy (ce n'est pas un problème, mais je ne veux pas compliquer mon code)
  2. projet Construit sous la dernière API de niveau et indiquer min-sdk = 4 (mais si un nouveau niveau API est créé, je devrai reconstruire mon projet à nouveau?)

Répondre

0

Essayez de détecter la version du système d'exploitation et analysez les classes que vous utilisez via les interfaces. Une autre question a couvert ceci ici: Load class based on SDK version

Cela devrait vous permettre de charger sélectivement l'implémentation appropriée en fonction de la version de l'OS que l'appareil en cours d'exécution de votre application a chargé.

+0

J'ai un problème identique, également concernant Window.Callback, et je ne vois pas comment cette réponse le résout. L'interface Window.Callback est appelée directement par les classes du système d'exploitation. Je n'ai pas la possibilité de contrôler quelle version de ces classes est active. Bien sûr, je pourrais résoudre le problème immédiat en ajoutant les nouvelles méthodes à ma mise en œuvre, mais cela ne durera que jusqu'à ce que Google décide d'en ajouter d'autres à l'avenir. – mhsmith