gpt4 book ai didi

android - API 28 中 Fragment 中的 MapFragment 崩溃

转载 作者:IT老高 更新时间:2023-10-28 13:42:14 26 4
gpt4 key购买 nike

我正在尝试将 map 添加到 fragment 中,但我的 IDE 中没有任何错误迹象,但应用程序刚刚在设备中崩溃。我不知道发生了什么。我已经在控制台中启用了适用于 Android 的 map SDK,我所做的只是将 Android Studio 生成的 MapsActivity 修改为 MapsFragment。

MainActivity.kt

import android.support.v7.app.AppCompatActivity
import android.os.Bundle

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

val fragmentTransaction = supportFragmentManager.beginTransaction()
fragmentTransaction.add(R.id.fragment_container, MapsFragment.newInstance()).commit()
}
}

MapsFragment.kt

import android.os.Bundle
import android.support.v4.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.google.android.gms.maps.*

import com.google.android.gms.maps.model.LatLng
import com.google.android.gms.maps.model.MarkerOptions

class MapsFragment : Fragment(), OnMapReadyCallback {

private lateinit var mMap: GoogleMap

companion object {
fun newInstance() = MapsFragment()
}

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_maps, container, false)

val mapFragment = childFragmentManager.findFragmentById(R.id.map) as SupportMapFragment
mapFragment.getMapAsync(this)
}

override fun onMapReady(googleMap: GoogleMap) {
mMap = googleMap

// Add a marker in Sydney and move the camera
val sydney = LatLng(3.0414067, 101.5901829)
mMap.addMarker(MarkerOptions().position(sydney).title("Marker in Sydney"))
mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney))
}
}

fragment_maps.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MapsFragment">

<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"/>

</FrameLayout>

我得到的只是这个错误。

E/AndroidRuntime: FATAL EXCEPTION: Thread-7
java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/ProtocolVersion;
at ep.b(:com.google.android.gms.dynamite_mapsdynamite@13280056@13.2.80 (040800-211705629):3)
at eo.a(:com.google.android.gms.dynamite_mapsdynamite@13280056@13.2.80 (040800-211705629):4)
at eq.a(:com.google.android.gms.dynamite_mapsdynamite@13280056@13.2.80 (040800-211705629):55)
at com.google.maps.api.android.lib6.drd.ap.a(:com.google.android.gms.dynamite_mapsdynamite@13280056@13.2.80 (040800-211705629):11)
at dx.a(:com.google.android.gms.dynamite_mapsdynamite@13280056@13.2.80 (040800-211705629):17)
at dx.run(:com.google.android.gms.dynamite_mapsdynamite@13280056@13.2.80 (040800-211705629):65)
Caused by: java.lang.ClassNotFoundException: Didn't find class "org.apache.http.ProtocolVersion" on path: DexPathList[[zip file "/system/priv-app/PrebuiltGmsCore/app_chimera/m/MapsDynamite.apk"],nativeLibraryDirectories=[/data/user_de/0/com.google.android.gms/app_chimera/m/00000006/n/x86_64, /system/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at ad.loadClass(:com.google.android.gms.dynamite_dynamiteloader@13280056@13.2.80 (040800-211705629):25)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at ep.b(:com.google.android.gms.dynamite_mapsdynamite@13280056@13.2.80 (040800-211705629):3) 
at eo.a(:com.google.android.gms.dynamite_mapsdynamite@13280056@13.2.80 (040800-211705629):4) 
at eq.a(:com.google.android.gms.dynamite_mapsdynamite@13280056@13.2.80 (040800-211705629):55) 
at com.google.maps.api.android.lib6.drd.ap.a(:com.google.android.gms.dynamite_mapsdynamite@13280056@13.2.80 (040800-211705629):11) 
at dx.a(:com.google.android.gms.dynamite_mapsdynamite@13280056@13.2.80 (040800-211705629):17) 
at dx.run(:com.google.android.gms.dynamite_mapsdynamite@13280056@13.2.80 (040800-211705629):65) 

最佳答案

如果您的目标 API 级别为 28 或更高,则必须在您的 list 中包含:

<uses-library android:name="org.apache.http.legacy" android:required="false"/>

供您引用:https://issuetracker.google.com/issues/79478779

关于android - API 28 中 Fragment 中的 MapFragment 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53115921/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com