首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java.lang.ClassCastException:不能将com.here.android.mpa.mapping.MapView强制转换为com.here.android.mpa.mapping.AndroidXMapFragment

java.lang.ClassCastException:不能将com.here.android.mpa.mapping.MapView强制转换为com.here.android.mpa.mapping.AndroidXMapFragment
EN

Stack Overflow用户
提问于 2020-03-18 20:11:46
回答 2查看 396关注 0票数 1

嗨,我正在使用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类:

代码语言:javascript
复制
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:

代码语言:javascript
复制
 <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"

    />
EN

回答 2

Stack Overflow用户

发布于 2020-09-02 15:56:57

如果您正在使用此处的 documentation中的片段,并且将其放入另一个片段中,则应使用:

代码语言:javascript
复制
val mapfragment = childFragmentManager.findFragmentById(R.id.mapfragment) as AndroidXMapFragment

然后找到片段而不是视图(因为它不是视图),因为如果检查mapfragment,它已经扩展了Fragment()

票数 0
EN

Stack Overflow用户

发布于 2020-09-29 03:28:43

尝试使用supportFragmentManager:

代码语言:javascript
复制
val mapfragment = supportFragmentManager.findFragmentById(R.id.map_frag) as AndroidXMapFragment?
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60739325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档