概要
最後に、setForeground()
ViewGroups extends で API 23 が必要であると誤ってフラグ付けされた関連する問題を見つけましたFrameLayout
。
問題 189041: FrameLayout を拡張する ViewGroups に API 23 (NewApi) が必要であると setForeground() が誤ってフラグ付けされる
を拡張していない場合FrameLayout
、ドキュメントは間違っており、API 23 が必要です。
問題 186273: View.setForeground の API レベルが間違っている
更新された質問
Commonsware によってImageView でメソッドを使用できないの重複setForeground
としてマークされ、彼によって回答されました。
それはドキュメントのバグです。setForeground() は API レベル 1 から FrameLayout に存在しました。API レベル 23 の時点ではビューのみです。
私の場合、ドキュメントのバグはフォークのインスペクションでは検出されませんが、統合プロジェクトで検出されます。とにかく、これは私の最初の質問に答えます。
しかし、それは同じケースではありません。このコードはすでに a を拡張してFramelayout
おり、このメソッドを使用しImageView
ています。これは ではないため、このメソッドは API 23 で削除されたと思います。現在、リファレンスには表示されていません。
更新: FrameLayoutの差分レポートを追加します。
新しい質問
私の質問は、以前のバージョンでメソッドを使用する方法に変わり、なぜ検査エラーが選択的に表示されるのですか?
冗長なキャストを追加すると、エラー メッセージが消えます。
((FrameLayout) layout).getForeground()
しかし、View
現在サポートされていないメソッドにアクセスしています。
したがって、以前の API をターゲットにするとエラー メッセージが削除されると思いますが、この Framelayout メソッドを使用する解決策または私の場合の問題を解決する手がかりをいただければ幸いです。
ANDROID_COMPILE_SDK_VERSION=23
ANDROID_BUILD_TOOLS_VERSION=23.0.1
ANDROID_DEFAULT_MIN_SDK_VERSION=19
ANDROID_DEFAULT_TARGET_SDK_VERSION=23
回避策
要するに、回避策として、タイプをFrameLayout
直接に変更したので、API とキャストに関する警告がなくなり、Android 4.4.4 デバイスとデバッグで動作することをテストしました。 、将来的に修正/交換します。
最初の質問
Google のサンプルandroid-topekaを fork してカスタマイズしたところ、android-studioで、パッケージ内getForeground()
のクラスのメソッドを使用するために必要な API レベルについて理解できないエラーが表示されました。View
android.view
呼び出しには API レベル 23 が必要です (現在の最小値は 19): android.view.View#getForeground
参照は、メソッドが API レベル 1 で追加されたことを示しており、ドキュメント ( )Control+Q
は同じことを示しています。
しかし、Calling new methods on older versions inspection
API レベル 23 が必要であるというエラーが表示されます。
同様の質問、その場合のバグを見つけましたが、元のフォークがこのエラーメッセージを表示しないため、これはバグではないと思います。
メッセージが最初に表示されたときに検出しようとしますが、多くの変更を行ったので、手がかりをいただければ幸いです。