28

概要

最後に、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 レベルについて理解できないエラーが表示されました。Viewandroid.view

呼び出しには API レベル 23 が必要です (現在の最小値は 19): android.view.View#getForeground

参照は、メソッドが API レベル 1 で追加されたことを示しており、ドキュメント ( )Control+Qは同じことを示しています。

API レベル 1 メソッドを示すドキュメント

しかし、Calling new methods on older versions inspectionAPI レベル 23 が必要であるというエラーが表示されます。

API 23 必須に関するエラー メッセージ

同様の質問、その場合のバグを見つけましたが、元のフォークがこのエラーメッセージを表示しないため、これはバグではないと思います。

メッセージが最初に表示されたときに検出しようとしますが、多くの変更を行ったので、手がかりをいただければ幸いです。

4

1 に答える 1

20

最後に、関連する問題を見つけました。 setForeground()ViewGroups extends には API 23 が必要であると誤ってフラグされていますFrameLayout

問題 189041: FrameLayout を拡張する ViewGroups に API 23 (NewApi) が必要であると setForeground() が誤ってフラグ付けされる

を拡張していない場合FrameLayout、ドキュメントは間違っており、API 23 が本当に必要です。

問題 186273: View.setForeground の API レベルが間違っている

于 2015-10-28T08:42:54.010 に答える