0

下位互換性を備えたアプリを構築しようとしていますが、android.os.Build.VERSION.SDK_INT.

ただし、これらのクラスをプロジェクトにインポートする必要があり、古いデバイスで実行するとエラーが発生します。Androidでクラスを条件付きでインポートできますか? Google で何かを検索しようとしましたが、有効な結果を返すために何を検索すればよいかわかりません。

tl;dr - 新しい API/SDK バージョンで追加されたクラスを古いデバイスで使用したいのですがimport newer.api.level.class、アプリケーションの動作が妨げられています。私は何をしますか?

編集: 特に私にとっては、アクティビティの 1 つで PopupMenu.OnMenuItemClickListener プロトコルを実装していますが、それがアプリケーションの不満です。

エラーはFailed resolving Lcom/example/myApp; interface 575 'Landroid/widget/PopupMenu$OnMenuItemClickListener;'

4

2 に答える 2

3

ここでの問題はimport(コンパイル時に処理する必要がある) ではなく、Activity (すべてのプラットフォームで使用されていた) が を実装してPopupMenu.OnMenuItemClickListenerいたため、古いプラットフォームを実行しているデバイスで問題が発生していました。

新しい API 機能を使用するときは、新しいクラス/メソッドのすべての使用が、条件付き実行を通じて、適切な API レベルを持つデバイスでのみ実行されることを常に確認してください。

ここでの正しい方法は、Activity にリスナーを実装させるのではなく、ここで行われている方法と同様に、条件付き実行ブロックでリスナーを匿名クラスにすることです。

于 2013-02-21T23:39:26.567 に答える
0

詳細を知らなくても、下位互換性に焦点を当てた以下を参照してください。

http://developer.android.com/tools/extras/support-library.html

于 2013-02-21T23:12:44.330 に答える