7

あるアクティビティから別のアクティビティに移行するときに、overridePendingTransitionを使用してカスタムアニメーションを実行するアプリケーションがあります。これはAndroid2.0で利用可能になりましたが、Android1.6でアプリケーションを動作させたいと思います。android.os.Build.VERSION.SDK_INT> android.os.Build.VERSION_CODES.DONUTをチェックしたばかりかどうかを判断しました。チェックしていない場合は、overridePendingTransitionを実行しないでください。

ただし、VerifyErrorが発生します。これは、次の原因によるものと思われます。VFY:仮想メソッドを解決できません346:../../ログイン:overridePendingTransition(II)V

SDKのバージョンに基づいて条件付きで新しい機能を使用することはできませんか?

4

1 に答える 1

15

SDKのバージョンに基づいて条件付きで新しい機能を使用することはできませんか?

はい、そうです。

あなたのコードは次のようになっていると思います。

if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.DONUT) {
  overridePendingTransition(...);
}

私が正しければ、それはうまくいきません。VMは、ステートメントが実行されoverridePendingTransition()たときではなく、クラスがロードされたときに検索を試みます。if()

代わりに、これを行うことができるはずです:

if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.DONUT) {
  SomeClassDedicatedToThisOperation.overridePendingTransition(this, ...);
}

overridePendingTransition()ここで、 inの実装は、提供されたSomeClassDedicatedToThisOperationを呼び出すだけです。overridePendingTransition()Activity

SomeClassDedicatedToThisOperation他の場所で使用されていない限り、if()テスト内に入るまでそのクラスはロードされず、は取得されませんVerifyError

于 2010-08-26T12:18:48.380 に答える