import com.google.Android.gms.maps.SupportMapFragment;
import androidx.fragment.Fragment;
...
private SupportMapFragment mMapFragment;
...
mMapFragment = (SupportMapFragment) form.getSupportFragmentManager().findFragmentByTag(MAP_FRAGMENT_TAG);
ここで、IDEはandroidx.fragment.FragmentがSupportMapFragment(Android.support.v4.app.Fragmentを拡張します)
Play-services-mapsのバージョン15.0.1とAndroidXライブラリのバージョン1.0.0-beta01を使用しています。
リリースノートにAndroidX以降のSupportMapFragmentの更新が見つかりませんでした: https://developers.google.com/maps/documentation/Android-sdk/releases
編集:誰かが尋ねる前に、form
はForm
を拡張するAppCompatActivity
クラスのインスタンスです(AndroidXから)
この問題は、公開問題トラッカーで既にGoogleに報告されています。
https://issuetracker.google.com/issues/1105739
パブリック問題トラッカーで機能リクエストにスターを付けて投票を追加し、Googleからの通知を購読することをお勧めします。 GoogleがAndroid Maps SDKの次のバージョンで実装することを願っています。
Googleは、公開問題トラッカーで次の回答を提供しました
こんにちは、みんな、
前述のとおり、Google Maps APIは現在AndroidXではなくサポートライブラリに基づいています。 Google Maps APIの将来のバージョンは確かにAndroidXをサポートしますが、当面は、次の回避策で問題を解決できます。
- Android Studio 3.2(現在のプレビュー)またはそれ以上
- Build.gradleに「compileSdkVersion 28」が含まれていることを確認します(新しいAS 3.2プロジェクトのデフォルト)
Gradle.propertiesファイルに次を含めます(新しいAS 3.2プロジェクトのデフォルト)
Android.useAndroidX = true
Android.enableJetifier = true
最後に、サポートライブラリを参照する既存のコードについては、Android Studio 3.2+で[リファクタリング-> AndroidXにリファクタリング]ツールを使用して、新しいAndroidXパッケージを使用するようにコードを自動的に変換します。
同じ問題が発生しました。build.gradleファイルで利用可能な最後のバージョンにすべてのインポートを更新し、追加して修正しました。
Android.enableJetifier=true
Android.useAndroidX=true
Gradle.propertiesへ
これは、インポートしたマップパッケージのバージョンです
implementation 'com.google.Android.gms:play-services-maps:15.0.1'
いくつかのインポートを修正するだけで完了です
私は願います
編集:今言った内容を編集した後でも、Javaにエラーが表示されますが、エラーなしでコンパイルおよび実行されます
EDIT2:昨日、彼らはissuetrackerの回避策を提案しました https://issuetracker.google.com/issues/110573930#comment1
最新のGoogleマッププレイサービスを追加すると、問題が解決します。
実装 'com.google.Android.gms:play-services-maps:16.0.0'
最後に、ここに完璧な答えがあります
1。追加
Android.enableJetifier=true
Android.useAndroidX=true
Gradle.propertiesへ
2。 Android studio 3.2以降では、プロジェクトをAndroidXに移行します]メニューバーから[リファクタリング]> [AndroidXに移行]
3。 (最も重要)プロジェクトのインポートの一部(クラスで使用)を同等のAndroidXライブラリに置き換える必要があります。 ここ ライブラリとその同等物を見つけることができます。それらを置き換えるだけです。完了、あなたは行ってもいいです:-)
残念ながら、Android Jetifierは機能しませんでした。 SupportMapFragment
をプロジェクトにコピーし、親を変更することでこの問題を解決しました。この手順の間に、zzak
という名前のクラスのコピーも作成する必要がありました(SupportMapCallback
に名前を変更しました)。
このソリューションは、Play Servicesライブラリの更新から独立しているため、現時点では一時的な原因として使用する必要があることに注意してください。できるだけ早くAndroidXに移行する必要がある場合は、こちらから自由に入手してください。
https://Gist.github.com/mroczis/3988e390a8b04fad3c8714181718cd6
これが機能するには、次のバージョン以上である必要があります。
com.google.Android.gms:play-services-maps:16.0.0
AndroidXに移行した後は、キャッシュを無効にして再起動し、Googleマップの依存関係にあるすべての赤いエラーを取り除いてください。
Android studioバージョンを3.2以上に更新する必要があります。これはまだベータ版です。問題は、GoogleマップライブラリがサポートライブラリのFragmentクラスを使用しているため、androidXと競合するため、Android Studio 3.2バージョンはすべての依存関係をリファクタリングしてandroidXクラスを使用することです。
私もこの問題を抱えていました。それは本当にニースではなく、確かに一時的ですが、それが私がそれを機能させることができる唯一の方法でした。そのため、少なくとも修正されるまではブロックされませんでした。
final Object mf = getChildFragmentManager().findFragmentById(R.id.map);
if (mf instanceof SupportMapFragment) {
final SupportMapFragment smf = (SupportMapFragment) mf;
// ...
} else {
//handle
}
コンパイラー時間とランタイムの両方で機能します。
「com.google.Android.gms:play-services-maps:16.1.0」で再び失敗するので注意してください。したがって、将来のリリースでこのバグを修正するまで、バージョン16.0.0にアタッチしたままにしてください。
以下のように、グレードアプリモジュールに最新バージョンのplay-services-mapsを実装しました。
**
実装 'com.google.Android.gms:play-services-maps:17.0.0'
**