6

重複の可能性:
互換性を維持するためにAndroidで非推奨のクラスを処理する方法

非推奨のメソッドに遭遇し、Display.getWidth()それがに置き換えられていることを確認しましたandroid.view.getSize()。ただしgetSize()、API 13以降でのみ利用可能でありView、V4Androidサポートライブラリには含まれていないようです。

したがって、非推奨の呼び出しを回避したい場合、さまざまなAPIレベルに対して異なるプロジェクト/ビルドを維持せずにこれを行うにはどうすればよいですか。

4

2 に答える 2

4

Display、という名前のオブジェクトが与えられた場合display、これは機能するはずです。

int width=-1;

if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.HONEYCOMB_MR2) {
    Point size=new Point();
    size=display.getSize(size);
    width=size.x;
}
else {
    width=display.getWidth();
}

IOW、Build.VERSION.SDK_INT新しいAPIが導入される「前」と「後」のケースの間で分岐するために使用します。

これには、ビルドターゲット(Eclipseの[プロジェクト]>[プロパティ]>[Android])をAPIレベル13以降に設定する必要があるため、を呼び出すことができますgetSize()

于 2012-09-10T13:32:02.620 に答える
2

下位互換性のあるUIの作成に関する公式のAndroid開発者クラスがあります。

このクラスは、新しいバージョンのAndroidで利用可能なUIコンポーネントとAPIを下位互換性のある方法で使用して、アプリケーションが以前のバージョンのプラットフォームで引き続き実行されるようにする方法を示します。

彼らは、よりオブジェクト指向のソリューションを得るために、バックポートされていないライブラリにJavaインターフェイスを使用することを提唱しています。次に、これらを2つの具体的なクラスに拡張します。1つはサポートされていないプラットフォームの代替動作を提供し、もう1つはサポートされているプラ​​ットフォームの実際のAPIを呼び出します。

次に、サポートされているプラ​​ットフォーム範囲に対して現在のプラットフォームをチェックすることにより、正しいクラスをインスタンス化するファクトリクラスがあります。しかし、最終的には、のような条件に要約されif ( Build.VERSION.SDK_INT >= HONEYCOMB_MR2 )ます。

于 2012-09-11T03:17:45.537 に答える