まとめ
最後に、関連する問題を見つけました。setForeground()
は、FrameLayout
を拡張するViewGroupsでAPI 23を必要とするフラグが誤って付けられています。
問題189041:setForeground()は、FrameLayout を拡張するViewGroupsにAPI 23(NewApi)を必要とするフラグが誤って付けられました
FrameLayout
を拡張しない場合、ドキュメントが間違っており、API 23が必要です。
問題186273:View.setForegroundの誤ったAPIレベル
更新された質問
Commonswareによって duplicated of Ca n't use setForeground
method on Imageview としてマークされ、彼によって回答されました:
これはドキュメントのバグです。 setForeground()はAPIレベル1からFrameLayoutに存在しました。 APIレベル23の時点でのみ表示されます。
私の場合、ドキュメントのバグはフォークの検査では検出されませんが、統合プロジェクトでは検出されます。理解できません。とにかく、これは私の最初の質問の答えです。
しかし、それは同じケースではありません。このコードはすでにFramelayout
を拡張しており、このメソッドを使用しているため、ImageView
ではありません。そのため、メソッドはAPI 23で削除されたと考えられます。現在、リファレンスには表示されません。
更新:FrameLayoutに diff report を追加します:
新しい質問
だから私の質問は以前のバージョンでの方法の使い方に変わり、なぜ検査エラーが選択的に表示されるのですか?
冗長なキャストを追加すると、エラーメッセージが消えます。
((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デバイスとデバッグで動作することをテストしました。とにかく、それは1つのアニメーションでのみ使用され、将来修正または交換する予定です。
最初の質問
Googleサンプル Android-topeka をフォークしてカスタマイズしましたが、Android-studioに、メソッドgetForeground()
を使用するために必要なAPIレベルについて理解できないエラーが表示されますAndroid.view
パッケージのView
クラス:
呼び出しにはAPIレベル23(現在の最小値は19)が必要です:Android.view.View#getForeground
reference は、メソッドをAPIレベル1で追加されたものとしてマークし、ドキュメント(Control+Q
)は同じことを示しています。
ただし、Calling new methods on older versions inspection
は、APIレベル23が必要であることを示すエラーを表示します。
同様の質問 、その場合のバグを見つけましたが、元のフォークにはこのエラーメッセージが表示されないため、これはバグではないと思います。
メッセージが最初に表示されたときに検出を試みますが、多くの変更を加えたので、手がかりをいただければ幸いです。
最後に、関連する問題を見つけました。setForeground()
は、FrameLayout
を拡張するViewGroupsにAPI 23を必要とするという誤ったフラグを立てました。
問題189041:setForeground()は、FrameLayoutを拡張するViewGroupsにAPI 23(NewApi)を必要とするフラグが誤って付けられます
FrameLayout
を拡張しない場合は、ドキュメントが間違っており、API 23が本当に必要です。