Android Studio使用百度地图SDK的导航功能时,无法获取导航View

hhh小菜鸡 2020-03-06 04:20:06
2020-03-06 16:14:32.013 2296-2296/com.example.arnavigation E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.arnavigation, PID: 2296
java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference
at com.baidu.platform.comapi.walknavi.g.a.G(WalkUIController.java:849)
at com.baidu.platform.comapi.walknavi.g.a.H(WalkUIController.java:869)
at com.baidu.platform.comapi.walknavi.g.a.<init>(WalkUIController.java:352)
at com.baidu.platform.comapi.walknavi.b.b(WNavigator.java:585)
at com.baidu.mapapi.walknavi.controllers.a.a.a(WalkNaviManager.java:189)
at com.baidu.mapapi.walknavi.WalkNavigateHelper.onCreate(WalkNavigateHelper.java:344)
at com.example.arnavigation.MainActivity$1$1.onRoutePlanSuccess(MainActivity.java:178)
at com.baidu.mapapi.walknavi.controllers.a.c.b(WalkNaviManager.java:425)
at com.baidu.platform.comapi.wnplatform.j.e.handleMessage(WRoutePlaner.java:116)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7682)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:516)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
这是错误信息,按照官网的格式写的代码,不知道有什么问题
...全文
684 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_53117729 应用层 2022-03-27
  • 打赏
  • 举报
回复

您好,请问您解决这个问题了吗?怎么解决的?

KEVI~N 2021-02-18
  • 打赏
  • 举报
回复
请问解决了吗
duxikuan 2021-02-05
  • 打赏
  • 举报
回复 1
添加如下文件(官方demo中) /* * Copyright (C) 2020 Baidu, Inc. All Rights Reserved. */ package com.baidu.bikenavi_demo; import android.annotation.SuppressLint; import android.content.Context; import android.content.pm.ApplicationInfo; import android.util.Log; import java.lang.reflect.Method; import static android.os.Build.VERSION.PREVIEW_SDK_INT; import static android.os.Build.VERSION.SDK_INT; import static android.os.Build.VERSION_CODES.P; public class ReflectHelper { private static final String TAG = "ReflectHelper"; private static final int UNKNOWN = -9999; private static final int ERROR = -20; private static Object sVmRuntime; private static Method setHiddenApiExemptions; private static int unsealed = UNKNOWN; static { try { Method forName = Class.class.getDeclaredMethod("forName", String.class); Method getDeclaredMethod = Class.class.getDeclaredMethod("getDeclaredMethod", String.class, Class[].class); Log.e(TAG, "getDeclaredMethod:" + getDeclaredMethod); Class<?> vmRuntimeClass = (Class<?>) forName.invoke(null, "dalvik.system.VMRuntime"); Method getRuntime = (Method) getDeclaredMethod.invoke(vmRuntimeClass, "getRuntime", null); setHiddenApiExemptions = (Method) getDeclaredMethod.invoke(vmRuntimeClass, "setHiddenApiExemptions", new Class[]{String[].class}); sVmRuntime = getRuntime.invoke(null); } catch (Throwable e) { Log.e(TAG, "reflect bootstrap failed:", e); } } public static void unseal(Context context) { if (SDK_INT < 28) { // Below Android P, ignore return; } // try exempt API first. if (exemptAll()) { return; } if (context == null) { return; } ApplicationInfo applicationInfo = context.getApplicationInfo(); synchronized (ReflectHelper.class) { if (unsealed != UNKNOWN) { return; } unsealed = 0; if ((SDK_INT == P && PREVIEW_SDK_INT > 0) || SDK_INT > P) { return; } // Android P, we need to sync the flags with ApplicationInfo // We needn't to this on Android Q. try { @SuppressLint("PrivateApi") Method setHiddenApiEnforcementPolicy = ApplicationInfo.class .getDeclaredMethod("setHiddenApiEnforcementPolicy", int.class); setHiddenApiEnforcementPolicy.invoke(applicationInfo, 0); } catch (Throwable e) { e.printStackTrace(); unsealed = ERROR; } } } /** * make the method exempted from hidden API check. * * @param method the method signature prefix. * @return true if success. */ public static boolean exempt(String method) { return exempt(new String[]{method}); } /** * make specific methods exempted from hidden API check. * * @param methods the method signature prefix, such as "Ldalvik/system", "Landroid" or even "L" * @return true if success */ private static boolean exempt(String... methods) { if (sVmRuntime == null || setHiddenApiExemptions == null) { return false; } try { setHiddenApiExemptions.invoke(sVmRuntime, new Object[]{methods}); return true; } catch (Throwable e) { return false; } } /** * Make all hidden API exempted. * * @return true if success. */ private static boolean exemptAll() { return exempt(new String[]{"L"}); } } Application中做如下操作 public class BNaviDemoApplication extends Application { @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); ReflectHelper.unseal(base); } @Override public void onCreate() { super.onCreate(); SDKInitializer.initialize(this); } }
qq_53117729 应用层 2022-03-27
  • 举报
回复
@duxikuan 添加到项目的哪里啊,文件名有说法吗。。。
Soul_TT 2020-11-06
  • 打赏
  • 举报
回复
老哥找到解决办法了吗
bdmh 2020-03-06
  • 打赏
  • 举报
回复
findViewById没有找到对象,你看看是不是你的id有问题,仔细对一下,一般都是低级错误导致的

80,472

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧