嗨,我正在使用android的here SDK,我一直收到这个错误,我的项目有一个导航抽屉,我正在尝试用here SDK在其中一个片段中创建一个地图。这是我的XML和Kotlin代码,以及错误my error:
java.lang.ClassCastException: com.here.android.mpa.mapping.MapView cannot be cast to com.here.android.mpa.mapping.AndroidXMapFragment at com.example.pplin_mobilite.ui.Passager.PassagerFragment.onActivityCreated(PassagerFragment.kt:22) at androidx.fragment.app.Fragment.performActivityCreated(Fragment.java:2717) at androidx.fragment.app.FragmentStateManager.activityCreated(FragmentStateManager.java:346) at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1188) at androidx.fragment.app.FragmentManager.addAddedFragments(FragmentManager.java:2224) at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1997) at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1953) at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1849) at androidx.fragment.app.FragmentManager$4.run(FragmentManager.java:413) at android.os.Handler.handleCallback(Handler.java:873) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:6758) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:497) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:912)
我的kotlin类:
class PassagerFragment : Fragment() {
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
// Search for the Map Fragment
val mapFragment = map_frag as AndroidXMapFragment
// initialize the Map Fragment and
// retrieve the map that is associated to the fragment
mapFragment.init { error ->
if (error == OnEngineInitListener.Error.NONE) {
// now the map is ready to be used
mapFragment.map
// ...
} else {
println("ERROR: Cannot initialize AndroidXMapFragment")
}
}
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_notifications,container,false)
}}
和我的xml:
<fragment
class="com.here.android.mpa.mapping.AndroidXMapFragment"
android:id="@+id/map_frag"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
/>发布于 2020-09-02 15:56:57
如果您正在使用此处的 documentation中的片段,并且将其放入另一个片段中,则应使用:
val mapfragment = childFragmentManager.findFragmentById(R.id.mapfragment) as AndroidXMapFragment然后找到片段而不是视图(因为它不是视图),因为如果检查mapfragment,它已经扩展了Fragment()
发布于 2020-09-29 03:28:43
尝试使用supportFragmentManager:
val mapfragment = supportFragmentManager.findFragmentById(R.id.map_frag) as AndroidXMapFragment?https://stackoverflow.com/questions/60739325
复制相似问题