1

複数のAndroidバージョン(おそらくすべてのバージョン)用に単一のAndroidアプリを作成したい私の問題は、アプリが現在実行されているAndroidのバージョンを確認し、バージョンに依存するクラスを動的にロードしたいということです。この部分は大丈夫です。

Eclipseプロジェクトでコンパイルエラーなしでそれをどのように達成できるのか疑問に思います。つまり、プロジェクトは特定のターゲット(1.5、2.1 ...)用に構成されているため、プロジェクト内のクラスが選択したターゲットと互換性がない場合、エラーが発生します。

プラットフォームに適合しない場合でも、このクラスをエクスポートする方法はありますか(分離されたライブラリについて考えましたが、もう一度:コンパイルpbsなしでこれらのクラスをライブラリにコンパイルする方法はありますか?)Androidのバージョンを確認した後、依頼するまで読み込まれないので、これで問題ありません。

ありがとう!

4

2 に答える 2

0

プロジェクトを最新のターゲット、つまり2.2でコンパイルした場合でも、1.5で実行されます。

于 2010-08-20T12:23:29.567 に答える
0

Class.forNameさまざまな条件に応じて、さまざまなクラスをロードするために使用できます。

public interface MyType {}
public class MyTypeOn15 implements MyType {}
public class MyTypeOn16 implements MyType {}
public class MyTypeOn20 implements MyType {}
// ...

そしてあなたのコードの他のどこか:

MyType myType = null;
if (getActualTarget().equals("1.5") {
   myType = Class.forName("MyTypeOn15").newInstance();
} else if (getActualTarget().equals("1.6") {
   myType = Class.forName("MyTypeOn16").newInstance();
} // ...

実装には、アクセス可能な空のコンストラクターが必要であることに注意してください。そしてgetActualTarget()、ターゲットを文字列識別子として返す魔法のメソッドです...

于 2010-08-20T12:23:58.940 に答える